2个选择:
1)把用户角色的会议时,他被认证为首次访问会话每次他试图访问一个功能
2)使用Map<String, List<Role>>
作为缓存并访问此映射而不是数据库以验证用户。地图的关键字可以是用户名。当用户登录时,将用户添加到地图中。当用户注销或会话过期时,请从地图中删除。 Spring Security使用Ehcache进行缓存,所以你可以这样做。
public void doLogin(HttpSevletRequest request) {
String username = request.getParameter("username");
String password = request.getParameter("password");
User user = service.authenticate(username, password);
HttpSession session = request.getSession();
session.setAttribute("roles", user.getRoles());
}
public void save(HttpServletRequest request) {
List<Role> roles = request.getSession().getAttribute("roles");
for(Role role : roles) {
if(role.getName()=="save") {
service.save();
break;
}
}
}
增加了一个简单的例子。对于缓存,除了会话使用Map之外,它将是类似的。
为什么不把角色放在'HttpSession'对象中并且每次检查一次? – 2013-03-25 11:09:25
将角色放到会话中,为您的DAO添加一个缓存过程,使用现有的框架,比如Spring Security ... – sp00m 2013-03-25 11:10:33
但是在我们基于JSp开发的Web应用程序中,我们没有关于Spring – 2013-03-25 11:13:42