与登录相关的几个辅助类重要功能解析
EhCacheTokenManager完成功能
它的作用就是把令牌存入缓存、删除或者读的操作。cacheManager.getCache(“login_user_tokens”)拿到cache.
cache.remove(key)移除token,cache.put(element)把token存入。要拿到Token的步骤是拿到cache后调用cache.get(key)拿到element,然后用element.getObjectValue()获得Token。
RestfulFilter完成功能
判断是否是Restful风格的设计模式,是执行restful风格的处理,不是则调用父类的方法。
WebUtils.toHttp(request).getMethod()用WebUtils.toHttp(request)拿到httpservlet,然后执行getMethod()拿到当前httpservlet的提交方法,然后与HttpMethod.OPTIONS.name().equalsIgnoreCase()相比较如果是这个方法就返回 true,这是个测试的提交方法。不是这个方法从提交信息里拿到Token,没有Token就不是restful格式,有Token从缓存中拿Token,缓存中没有表明刚刚登陆,调用subject.login(Token)方法登录。如果提交的Token不存在或者过期要调用方法writeResponse给出说明。
LogoutFilter完成功能
判断是不是restful的风格,来决定退出的方式。
调用restfulFiter.getToken(request)方法获得Token,如果不是restful风格的则调用父类的方法并且执行退出命令log.debug()以及调用日志记录命令写入日志数据库表。如果是restful风格的调用TokenManager删除Token.根据删除的成功与否调用writeResponse给出不同的说明,同时调用log.debug()给出信息,最后把 Token方式退出的日志写入日志数据库表中。
UserUtil完成功能
执行把用户类user、permissions添加到session中和从中取得的任务。SecurityUtils.getSubject().getSession()拿到session,调用setAttribute()和 getAttribute()存取user以及permissions。