asdtiang的博客 感謝blogjava提供的博客交流平臺(tái)

          grails acegi ajax登錄

          Posted on 2011-01-07 14:47 asdtiang 閱讀(754) 評(píng)論(2)  編輯  收藏 所屬分類: grails study
          js代碼如下:

          <script type='text/javascript'>
          /////ajax登錄js
              function showLogin() {
                  $('ajaxLogin').style.display 
          = 'block';
              }

              
          function onSuccessfulLogin(url) {
                  
          //alert(url);
                  document.form1.action=url;
                  document.form1.submit();
              }


              
          function authAjax() {
                  
          var form = document.ajaxLoginForm;
                  
          var params = Form.serialize(form)
                          
          + '&spring-security-redirect=/login/ajaxSuccess';
                  
          //Form.disable(form);
                  new Ajax.Request(form.action, {
                      method : 'POST',
                      postBody : params,
                      onSuccess : 
          function(response) {
                          
          var responseText = response.responseText || '[]';
                          
          var json = responseText.evalJSON();
                          
          if (json.success) {
                              
          //alert("ok");
                              onSuccessfulLogin(json.url);
                          }
           else if (json.error) {
                              alert(json.error);
                              Form.enable(document.ajaxLoginForm);
                          }
           else {
                              Element.update('loginMessage', responseText);
                              Form.enable(document.ajaxLoginForm);
                          }

                      }

                  }
          );
              }

          </script>

          login代碼示例:

          def ajaxSuccess = {
                  nocache(response)
                  def config 
          = authenticateService.securityConfig.security
                  def postUrl 
          = "${request.contextPath}${config.defaultTargetUrl}"
                  render 
          "{success: true,url:'${postUrl}'}"http://這里返回的是json
              }




          def authfail 
          = {

                  def username 
          = session[AuthenticationProcessingFilter.SPRING_SECURITY_LAST_USERNAME_KEY]
                  def msg 
          = ''
                  def exception 
          = session[AbstractProcessingFilter.SPRING_SECURITY_LAST_EXCEPTION_KEY]
                  
          if (exception) {
                      
          if (exception instanceof DisabledException) {
                          msg 
          = "[$username] 用戶被禁用."
                      }

                      
          else {
                          msg 
          = "[$username] 錯(cuò)誤的用戶名或密碼."
                      }

                  }


                  
          if (isAjax()) {
                      render 
          "{error: '${msg}'}"
                  }

                  
          else {
                      flash.message 
          = msg
                      redirect action: auth, params: params
                  }

              }






          頁面:
           

          <form id="form1" name="form1" target="_blank"></form>

          <form action='${request.contextPath}/j_spring_security_check'

              method='POST' id='ajaxLoginForm' name='ajaxLoginForm' target="_blank">

          用戶名<input id="j_username" name="j_username" type="text" />   

          &nbsp;&nbsp;&nbsp;&nbsp;<input name="j_password" id="j_password" type="password" /><input onclick='authAjax(); return false;'type="image" src="login.jpg" />

          </form>


          暫時(shí)想不起來為什么用兩個(gè)form呢,最后引入js:<g:javascript library="prototype" />



          天蒼蒼,野茫茫,風(fēng)吹草底見牛羊

          Feedback

          # re: grails acegi ajax登錄[未登錄]  回復(fù)  更多評(píng)論   

          2011-05-14 19:24 by oksonic
          你好,看了這篇文章,實(shí)際了登錄跳轉(zhuǎn),非常感謝。
          但我不能明白的是authfail為什么實(shí)現(xiàn)不了?

          # re: grails acegi ajax登錄  回復(fù)  更多評(píng)論   

          2011-05-18 21:59 by asdtiang
          代碼貼出來看下,不過,我想應(yīng)該解決了吧

          posts - 80, comments - 24, trackbacks - 0, articles - 32

          Copyright © asdtiang

          asdtiang的博客 PaidMailz
          點(diǎn)擊廣告網(wǎng)賺A(每天4個(gè)廣告,每個(gè)0.0025美元,一個(gè)搜索廣告0.03美元)
          主站蜘蛛池模板: 万山特区| 惠安县| 定南县| 厦门市| 阳高县| 东港市| 长兴县| 民和| 茶陵县| 清流县| 万山特区| 静乐县| 盐边县| 三原县| 绿春县| 毕节市| 广水市| 乳源| 桓仁| 社旗县| 乌审旗| 习水县| 思南县| 武陟县| 永春县| 禄丰县| 盖州市| 灵山县| 利辛县| 加查县| 舒城县| 旬邑县| 乾安县| 贞丰县| 馆陶县| 正定县| 萝北县| 曲阜市| 清徐县| 晋中市| 社会|