360SDN.COM

首页/Java/列表

jeecms框架单点登录功能的实现

来源:  2018-03-13 19:15:22    评论:0点击:

   单点登录的功能实现主要原理:

         1: 在点击登录按钮的时候使用reponse.addCookie()方法向浏览器发送cookie;

         2: 在前段拦截器中的request.getCookie()在接收到设置的cookie,然后根据cookie的值设置用户;

   jeecms里在CookieUtils类中封装了cookie的3个基本方法 addCookie()添加、getCookie() 获取和cancleCookie()取消

 
  1. /** 
  2.      * 根据部署路径,将cookie保存发送到浏览器 
  3.      *  
  4.      * @param request 
  5.      * @param response 
  6.      * @param name     cookie的名字 
  7.      * @param value    cookie的值 
  8.      * @param expiry   cookie生效的根路径 
  9.      * @param domain   cookie生效的域名可以是ip地址 
  10.      * @return 
  11.      */  
  12.     public static Cookie addCookie(HttpServletRequest request,  
  13.             HttpServletResponse response, String name, String value,  
  14.             Integer expiry, String domain) {  
  15.         Cookie cookie = new Cookie(name, value);  
  16.         if (expiry != null) {  
  17.             cookie.setMaxAge(expiry);  
  18.         }  
  19.         if (StringUtils.isNotBlank(domain)) {  
  20.             cookie.setDomain(domain);  
  21.         }  
  22.         String ctx = request.getContextPath();  
  23.         cookie.setPath("/");  
  24.         response.addCookie(cookie);  
  25.         return cookie;  
  26.     }  
 
  1. /** 
  2.  * 获得cookie 
  3.  *  
  4.  * @param request 
  5.  *            HttpServletRequest 
  6.  * @param name 
  7.  *            cookie name 
  8.  * @return if exist return cookie, else return null. 
  9.  */  
  10. public static Cookie getCookie(HttpServletRequest request, String name) {  
  11.     Assert.notNull(request);  
  12.     Cookie[] cookies = request.getCookies();  
  13.     if (cookies != null && cookies.length > 0) {  
  14.         for (Cookie c : cookies) {  
  15.             if (c.getName().equals(name)) {  
  16.                 return c;  
  17.             }  
  18.         }  
  19.     }  
  20.     return null;  
  21. }  
 
  1. /** 
  2.      * 取消cookie 
  3.      *  
  4.      * @param request 
  5.      * @param response 
  6.      * @param name 
  7.      * @param domain 
  8.      */  
  9.     public static void cancleCookie(HttpServletRequest request,  
  10.             HttpServletResponse response, String name, String domain) {  
  11.         Cookie cookie = new Cookie(name, "");  
  12.         cookie.setMaxAge(0);  
  13.         String ctx = request.getContextPath();  
  14.         cookie.setPath(StringUtils.isBlank(ctx) ? "/" : ctx);  
  15.         if (StringUtils.isNotBlank(domain)) {  
  16.             cookie.setDomain(domain);  
  17.         }  
  18.         response.addCookie(cookie);  
  19.     }  
 功能实现主要是在CasLogin类中的submit()方法中加入使用addCookie()添加cookie;
 然后在FrontContextInterceptor类中的preHandle()方法中使用getCookie()获取cookie,通过cookie设置当前用户;

代码如下:

 
  1. if (view != null) {  
  2.                       
  3.                     Cookie cookie1 = CookieUtils.addCookie(request, response, "fabule_username", user.getId().toString(), 6000"192.168.0.14");  
  4.                       
  5.                     return view;  
  6.                 } else {  
  7.                     FrontUtils.frontData(request, model, site);  
  8.                     return "redirect:login.jspx";  
  9.                 }  
 
  1. CmsUser user = null;  
  2.   
  3. Cookie userCookie = CookieUtils.getCookie(request, "fabule_username");   
  4. if(user == null && userCookie != null){   
  5. Integer userId =  Integer.parseInt(userCookie.getValue());   
  6. if (userId != null) {   
  7. user = cmsUserMng.findById(userId);   
  8. }   
  9. }   
  10. if (user != null) {   
  11. CmsUtils.setUser(request, user);   
  12. }   
  13.   
  14. return true
来源:http://blog.csdn.net/u011969811/article/details/40586743
为您推荐

友情链接 |九搜汽车网 |手机ok生活信息网|ok生活信息网|ok微生活
 Powered by www.360SDN.COM   京ICP备11022651号-4 © 2012-2016 版权