根据session解析当前登陆人信息

1、实现
用到了shiro的相关依赖

public void getUserIdentityid(HttpServletRequest request, HttpServletResponse response)throws Exception {
       HttpSession session = request.getSession();
       UserInfo userInfo = getUserInfo(session.getId(), request, response);
       String currLoginName = userInfo.getLoginName();
	}

2、调用的方法

    public UserInfo getUserInfo(String sessionID, HttpServletRequest request, HttpServletResponse response){
        SessionKey key = new WebSessionKey(sessionID,request,response);
        try{
            Session se = SecurityUtils.getSecurityManager().getSession(key);
            Object obj = se.getAttribute(DefaultSubjectContext.PRINCIPALS_SESSION_KEY);
            SimplePrincipalCollection coll = (SimplePrincipalCollection) obj;
            return (UserInfo)coll.getPrimaryPrincipal();
        }catch(Exception e){
            e.printStackTrace();
            return new UserInfo();
        }
    }

3、使用场景
如果一个接口的入参是登陆人账号、并且要限制这个接口只能处理当前系统登陆人和入参账号一致的情况下才执行其核心逻辑,否则返回空数据。

你可能感兴趣的:(servlet)