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