如何在请求期间检查JAAS中的授权

时间:2012-06-25 19:41:14

标签: java servlets jaas

我已经实现了JAAS提供的表单身份验证。由于我将所有页面都作为模板处理,因此每次都必须对代码进行评估。因此,当用户指向 / login 时,doGet请求必须处理它并处理登录模板。

现在我想在登录成功后重定向到主页面。当用户再次选择 / login 时,他/她应该被重定向到主页面。

因此,我需要在doGet请求期间知道用户是否被授权,也许还有哪种身份验证。我怎么检查?或者这个成语错了吗?


或者这是由 request.isUserInRole(String role)完成的?既然它同时进行身份验证和授权?

1 个答案:

答案 0 :(得分:3)

您可以通过检查HttpServletRequest#getRemoteUser()(用户名)或#getUserPrincipal()(关联的Princpal对象)来检查用户是否已登录返回null

所以,例如在doGet() servlet的/login中,您可以执行此操作:

if (request.getRemoteUser() != null) {
    // Already logged in, so redirect to some main page.
    response.sendRedirect(request.getContextPath() + "/main");
    return;
}

// ...

#isUserInRole()仅检查登录用户是否具有某个特定角色,这通常仅用于限制特定角色的某些页面或页面部分。因此,除非您拥有每个用户共享的一般角色,否则这没有用。

您可能只想添加一条消息,通知最终用户他/她被重定向的原因以及以另一个用户身份再次登录的正确方法。例如。 “您已经登录。如果您需要以其他用户身份登录,请先转到退出页面。”在基于某个重定向参数有条件显示的主页面中左右。