[英]BootStrap and Grails
我在Grails GSP中使用BootStrap ,我在其代码下面有一个登录模式,在使用Spring Security插件来处理登录,在输入用户名和密码的情况下,如何返回该模式并显示Flash消息。错了 。
登录模式代码:
<sec:ifNotLoggedIn>
<li> <a href="#" data-toggle="modal" data-target="#login-modal" class="btn navbar-btn btn-white"><i class="fa fa-sign-in"></i>Log in</a> <%--<g:link controller="login" action="auth">Login</g:link></li>--%>
</sec:ifNotLoggedIn>
<!-- *** LOGIN MODAL ***_________________________________________________________
-->
<div id="login-modal" tabindex="-1" role="dialog" aria-labelledby="Login" aria-hidden="true" class="modal fade">
<div class="modal-dialog modal-sm">
<div class="modal-content">
<div class="modal-header">
<button type="button" data-dismiss="modal" aria-hidden="true" class="close">×</button>
<h4 id="Login" class="modal-title">Customer login</h4>
</div>
<div class="modal-body">
<g:if test='${flash.message}'>
<div class="message" role="status"> ${flash.message}</div></g:if>
<form action='./j_spring_security_check' method='POST' id='loginForm' class='cssform' autocomplete='off'>
<div class="form-group">
<%--<input id="email_modal" type="text" placeholder="email" class="form-control">
--%><input type='text' class='form-control' name='j_username' id='username' placeholder="${message(code:'springSecurity.login.username.label') }"/>
</div>
<div class="form-group">
<%--<input id="password_modal" type="password" placeholder="password" class="form-control">
--%><input type='password' class='form-control' name='j_password' id='password' placeholder="${message(code:'springSecurity.login.password.label') }"/>
</div>
<p class="text-center">
<button type="submit" id="submit" class="btn btn-primary"><i class="fa fa-sign-in"></i> ${message(code: 'springSecurity.login.button')}</button>
</p>
</form>
<p class="text-center text-muted"><g:link controller="users" action="create"><g:message code="spring.security.ui.login.register" default="New User"/></g:link></p>
<p class="text-center text-muted"><g:link controller="register" action="forgotPassword"><g:message code="spring.security.ui.login.forgotPassword" default="Forgot Password"/></g:link></p>
</div>
</div>
</div>
</div>
<!-- *** LOGIN MODAL END ***-->
这是spring核心中的登录控制器:
def auth() {
def config = SpringSecurityUtils.securityConfig
if (springSecurityService.isLoggedIn()) {
redirect uri: config.successHandler.defaultTargetUrl
return
}
String view = 'auth'
String postUrl = "${request.contextPath}${config.apf.filterProcessesUrl}"
render view: view, model: [postUrl: postUrl,
rememberMeParameter: config.rememberMe.parameter]
}
您可以覆盖LoginController,并修改所需的所有操作。 考虑到这一点...
您可以将操作中的参数发送到gsp视图,以打开该模式(如果该参数存在)。
<g:if test="${openModal}">
<script>
$(document).ready(function(){
openModal();
});
<script>
</g:if>
另一种方法是使用Ajax完成所有操作。
如上例所示,您必须重写LoginController并在项目中创建它的副本。
之后,您必须更改期望结果的每个操作,然后将其响应修改为Ajax响应。
render status: 401, text: 'Unauthorized'
而且,当然,您必须更改表单行为才能对登录控制器进行ajax调用。 不建议这样做,但是您可以将该表格替换为ag:remoteForm。 或创建自己的ajax函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.