spring boot + shiro 열 배치 세 션 문제

5487 단어 springboot
 
  

开发环境可以这么用  正式环境注释就可以了

/**
 *   session    
 *
 * @return
 */
public static SysUser getSubject() {
    Session session = SecurityUtils.getSubject().getSession(false);
    SysUser sysUser = new SysUser();
    try {
        sysUser = (SysUser) session.getAttribute(Constant.LOGONUSER);
    } catch (ClassCastException ex) {
        //  redis session     spring devtools          
        sysUser = Global.convertObjToEntity(session.getAttribute(Constant.LOGONUSER));
    }
    return sysUser;
}

private static SysUser convertObjToEntity(Object redisObj) {
    SysUser sysUser = new SysUser();
    sysUser.setId(NumberUtils.toLong(ReflectUtils.getFieldValue(redisObj, SysUser.ID)+"",0));
    sysUser.setUsername(ReflectUtils.getFieldValue(redisObj, SysUser.USERNAME)+"");
    sysUser.setPassword(ReflectUtils.getFieldValue(redisObj, SysUser.PASSWORD)+"");
    sysUser.setDepartmentId(NumberUtils.toLong(ReflectUtils.getFieldValue(redisObj, SysUser.DEPARTMENTID)+"",0));
    sysUser.setFlag(NumberUtils.toInt(ReflectUtils.getFieldValue(redisObj, SysUser.FLAG)+"",0));
    sysUser.setPhone(ReflectUtils.getFieldValue(redisObj, SysUser.PHONE)+"");
    sysUser.setPhoto(ReflectUtils.getFieldValue(redisObj, SysUser.PHOTO)+"");
    sysUser.setRealName(ReflectUtils.getFieldValue(redisObj, SysUser.REALNAME)+"");
    sysUser.setSalt(ReflectUtils.getFieldValue(redisObj, SysUser.SALT)+"");
    sysUser.setSeeDepartments(ReflectUtils.getFieldValue(redisObj, SysUser.SEEDEPARTMENTS)+"");
    sysUser.setSessionId(ReflectUtils.getFieldValue(redisObj, SysUser.SESSIONID)+"");
    Object loginDateObj = ReflectUtils.getFieldValue(redisObj, SysUser.LASTLOGINDATE);
    sysUser.setLastLoginDate(loginDateObj != null ? (Date) loginDateObj : null);
    sysUser.setLastLoginIp(ReflectUtils.getFieldValue(redisObj, SysUser.LASTLOGINIP)+"");
    return sysUser;

}

공구 류 는 붙 이지 않 겠 습 니 다.  인터넷 에 되 게 많아 요.  직접 찾 아 보시 면 됩 니 다.  댓 글 을 못 찾 겠 어 요.

좋은 웹페이지 즐겨찾기