-2

我有一个 Web 应用程序 (JSP),我需要限制访问,所以只有登录的用户才能看到该应用程序。我看了看,发现了许多不同的方法。有人说要使用 cookie、会话或框架,例如 Spring Security。
我应该用什么?到目前为止,我在 java 和 jsp 编程方面有中等经验,那么你建议我做什么?
十分感谢!

4

2 回答 2

1

考虑使用 servlet 过滤器。将登录用户存储在会话中,并配置过滤器以检查用户在尝试访问您站点的安全目录时是否已登录(通过 url-pattern)。

基本信息在这里http://www.tutorialspoint.com/jsp/jsp_writing_filters.htm

但这里有一些更具体的内容可以帮助您入门。

创建一个实现 javax.servlet.Filter 的类,覆盖 doFilter 方法并检查用户是否已登录并使用注释配置 urlPatterns。

过滤器上的注释将是这样的:

@WebFilter(filterName="LoggingFilter", urlPatterns={"/secured/*"})

您希望保护的目录称为“安全”。

在类中重写 doFilter() 方法并检查用户是否已登录:

User user = session.getAttribute("user");
if (user != null) {
    chain.doFilter(request, response); // User is logged in so forward response.
} else {
    response.sendRedirect("login"); // User not logged in so redirect to login page.
}

这是将登录用户限制在站点的指定部分的有效方法。这个简单的示例可以扩展为根据用户类型或其他一些标准来限制对站点不同部分的访问。

于 2013-07-26T10:20:33.113 回答
1

我建议直接使用它,而不是准备自制版本的 Spring Security。考虑以下优点:

  • 将来如果您需要一些新的安全功能,那么您可以打开它们,而不是从零开始开发它们(例如 LDAP 身份验证、SSO,...)
  • 新开发人员有可能已经熟悉您的安全框架(另一方面,它肯定不会熟悉您的自制实验室)
  • 他们中的大多数都有很好的文档,所以当我们谈论基本的 URL 授权时,学习 cuve 很少(你有足够的时间为你的自制库准备相同级别的文档吗?)。
  • 它们具有针对会话固定等攻击的内置支持。
  • 它们有多个扩展点,因此您将不受框架的限制(您将能够添加/修改必要的功能)。
  • 它们具有模块化结构,您不需要加载所有模块/了解它们。只使用你需要的东西。

检查Apache ShiroSpring Security可能对您有用。

在 Spring Security 的情况下,如果您从这里开始阅读官方文档,那么您可以在 30 分钟内为基本 URL 授权(在 conf 中使用硬编码用户)准备所有 conf。然后你需要在你的类路径中包含相应的 jars(对于 Spring 和 Spring Security),仅此而已。打开调试日志org.springframework.security以查看发生了什么。

于 2013-07-26T12:29:00.487 回答