2009-10-06 51 views
2

我有3-4 servlet的一个小应用程序和基础模块提供me认证,如:的Java servlet和认证

public class Authentication { 
    public boolean isUserAuthenticated(){ 
     .... 
    } 
} 

有没有办法用我的班级每一个其他servlet调用前检查认证,而不必在每个代码中添加代码?我想避免检查用户的每个servlet以及每个必须添加的servlet。

任何建议广为接受:)

谢谢,罗伯托

回答

8

当然,使用servlet filter。这是在Java Web应用程序中实现安全性的标准方式。

Java Servlet规范版本 2.3引入了一种称为过滤器的新组件类型。动态过滤器 拦截请求并响应 转换或使用请求中包含的信息 或 响应。过滤器通常不会自己创建响应,但 改为提供通用功能 ,它们可以“附加”到任何类型的 servlet或JSP页面。

2

您可以将您的身份验证逻辑放在Servlet过滤器中。如果过滤器发现请求未通过身份验证,它可以将用户重定向到登录页面(或其他)。

到那个servlet的任何东西都被隐式认证。

1

使用Acegi Security(现在的Spring Security)。使用Spring也会让你的生活更轻松。 (Spring安全性使用上面提到的帖子中提到的servlet过滤器)。

+0

对于他的应用程序要求可能有点沉重。 – 2009-10-06 15:43:20

+1

但我认为Spring是一个“轻量级”容器? ;) – les2 2009-10-07 15:08:42