LoginController.groovy
上传用户:steveyhw
上传日期:2019-05-13
资源大小:307k
文件大小:2k
源码类别:

PlugIns编程

开发平台:

Java

  1. /**
  2.  * Login Controller (Example)
  3.  * @author generated by plugin script
  4.  */
  5. class LoginController {
  6.   AuthenticateService authenticateService
  7.   def index = {
  8.     if(isLogon()){
  9.       //if already logon
  10.       redirect(uri:"/")
  11.     }else{
  12.       redirect(action:auth,params:params)
  13.     }
  14.   }
  15.   /**
  16.    * Login Page
  17.    */
  18.   def auth = {
  19.     cache(response)
  20.     if(isLogon()){
  21.       //if already logon
  22.       redirect(uri:"/")
  23.     }
  24.   }
  25.   //Login page (function|json) for ajax access 
  26.   def authAjax = {
  27.     cache(response)
  28.     //this is example:
  29.     render """
  30.     <script type='text/javascript' language='JavaScript'>
  31.     (function(){
  32.       //call function
  33.       loginForm();
  34.     })();
  35.     </script>
  36.     """
  37.   }
  38.   /**
  39.    * Deny
  40.    */
  41.   def denied ={
  42.     redirect(uri:"/")
  43.   }
  44.   //deny page (data|view|json) for ajax access
  45.   def deniedAjax = {
  46.     //this is example:
  47.     render "{error:'access denied'}"
  48.   }
  49.   /**
  50.    * login failed
  51.    */
  52.   def authfail = {
  53.     def username = session["ACEGI_SECURITY_LAST_USERNAME"]
  54.     def msg=""
  55.     if(session["ACEGI_SECURITY_LAST_EXCEPTION"]){
  56.       def information = session["ACEGI_SECURITY_LAST_EXCEPTION"]
  57.       if(information instanceof org.acegisecurity.DisabledException){
  58.         msg="[$username] is disabled."
  59.       }else{
  60.         msg="[$username] 错误的用户名或密码."
  61.       }
  62.     }
  63.     //is ajax access?
  64.     def cnf = authenticateService.getAcegiConfig()
  65.     def ajaxHeader = cnf.acegi.ajaxHeader
  66.     def AJAX_HEADER="${ajaxHeader}"
  67.     boolean isAjax=false;
  68.     if(session["ACEGI_SAVED_REQUEST_KEY"]){
  69.       def itr =  session["ACEGI_SAVED_REQUEST_KEY"].getHeaderValues(AJAX_HEADER)
  70.       if(itr.hasNext()) isAjax=true
  71.     }
  72.     if(isAjax){
  73.       render("{error:'${msg}'}")
  74.     }else{
  75.       flash.message = msg
  76.       redirect(action:auth,params:params)
  77.     }
  78.   }
  79.   /** 
  80.    * is logon or not
  81.    */
  82.   def isLogon(){
  83.     def authPrincipal = authenticateService.principal()
  84.     return (authPrincipal!=null && authPrincipal!="anonymousUser")
  85.   }
  86.   /** cache controls */
  87.   def cache(response){
  88.     response.setHeader("Cache-Control","no-cache"); // HTTP 1.1
  89.     response.addDateHeader("Expires", 0);
  90.     response.setDateHeader("max-age", 0); 
  91.     response.setIntHeader ("Expires", -1); //prevents caching at the proxy server 
  92.     response.addHeader("cache-Control", "private"); //IE5.x only;
  93.   }
  94. }