登录在每个页面jsp / servlet上进行身份验证

时间:2011-03-28 04:13:27

标签: java servlets

我正在创建一个包含多个页面的应用程序,我希望用户可以重定向到登录页面,以防他未经过身份验证并尝试访问某个中间页面。

我在jsp / servlet上开发它,但也可以考虑struts。

3 个答案:

答案 0 :(得分:3)

ServletFilter将帮助您拦截请求并检查用户登录状态 - 这是一篇好文章:http://www.developer.com/security/article.php/3467801/Securing-J2EE-Applications-with-a-Servlet-Filter.htm

答案 1 :(得分:0)

在登录时,设置会话属性

request.setAttribute("user","<username>");

并且在每个页面中,首先检查会话属性是否为其设置

String user=request.getAttribute("user");
//check in database for user
if(<user not exist>){
 response.sendRedirect("login.jsp");
}

答案 2 :(得分:0)

您可以使用基于容器的安全性或基于表单的安全性来对用户进行身份验证。使用基于容器的安全性,Web浏览器将为您跟踪登录,并在需要时将凭据“重放”到服务器。如果浏览器尚未经过身份验证,它将自动显示一个简单的登录表单。如果登录通过,则用户的原始请求将继续。如果用户尝试从表单POST到受保护区域中的操作URI,这也将正常工作。浏览器通过身份验证后,POST会正常进行。对于管理自己的登录的应用程序,可能更容易坚持首先对经过身份验证的用户进行每个页面测试,如果没有,则重定向到登录页面。 Struts示例应用程序执行此操作 - 部分通过使用特定于应用程序的自定义标记(app:checkLogon)在每个页面的顶部执行此检查。标签是特定于应用程序的,因为构成“登录用户”的概念也是特定于应用程序的。

以下链接也可以为您提供更多帮助

http://www.mooreds.com/jaas.html

你可能想要扩展RequestProcessor。它是最好的做法之一。你可以用它的方法做什么。看看它的processPreprocess方法。

有关更多信息,请参阅... http://www.javaworld.com/javaworld/jw-09-2004/jw-0913-struts-p2.html