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;
}
}
}
些細な例を追加しました。キャッシュについては、セッション使用の代わりにマップを使用することを除いて、同様になります。