繁体   English   中英

BootStrap和Grails

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM