zoukankan      html  css  js  c++  java
  • jeecms框架单点登录功能的实现

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

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

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

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

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


    if (view != null) {

    Cookie cookie1 = CookieUtils.addCookie(request, response, "fabule_username", user.getId().toString(), 6000, "192.168.0.14");

    return view;
    } else {
    FrontUtils.frontData(request, model, site);
    return "redirect:login.jspx";
    }

    CmsUser user = null;

    Cookie userCookie = CookieUtils.getCookie(request, "fabule_username");
    if(user == null && userCookie != null){
    Integer userId = Integer.parseInt(userCookie.getValue());
    if (userId != null) {
    user = cmsUserMng.findById(userId);
    }
    }
    if (user != null) {
    CmsUtils.setUser(request, user);
    }

    return true;

    ---------------------
    作者:哲-哲
    来源:CSDN
    原文:https://blog.csdn.net/u011969811/article/details/40586743
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    C#中Dictionary的用法及用途
    Spring AOP面向切面编程
    一般处理程序(.ashx)中使用Session
    HTTP 错误 500.0
    IIS7.5和IIS6网站权限配置与区别
    查找和排序-4.选择排序
    查找和排序-3.冒泡排序
    查找和排序-2.二分查找
    查找和排序-1.顺序查找
    汉诺塔问题
  • 原文地址:https://www.cnblogs.com/Jeely/p/11214374.html
Copyright © 2011-2022 走看看