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美元)
          主站蜘蛛池模板: 丰县| 沧州市| 烟台市| 全州县| 华蓥市| 天峻县| 福建省| 咸阳市| 隆德县| 贡山| 巴彦县| 阳谷县| 资源县| 湟源县| 满洲里市| 中阳县| 荣成市| 平度市| 溧阳市| 横峰县| 金华市| 德州市| 南汇区| 镇平县| 江阴市| 姚安县| 桑植县| 外汇| 乐昌市| 正定县| 东平县| 尼木县| 休宁县| 乡城县| 塘沽区| 邳州市| 大余县| 潍坊市| 郸城县| 云安县| 涪陵区|