如何在JSP Web应用程序中保护链接?

时间:2013-02-10 12:56:55

标签: jsp java-ee servlets authorization security

我在我的webapp中隐藏了一些链接,具体取决于用户角色...现在我举例说明我在我的用户中隐藏了链接sample.jsp,其角色等于1.当然这会隐藏但如果这个用户知道链接他最终可以转到那个链接......如何配置?

3 个答案:

答案 0 :(得分:2)

当有人访问该链接指向的URL时,请检查他们是否已经过身份验证(如果没有,请向他们显示登录页面)以及他们是否经过身份验证的用户是否有权访问该页面(如果没有,请向他们显示错误消息解释并给他们“以不同的用户身份登录”表格。)

答案 1 :(得分:1)

Quentin建议应该这样做,如果你正在开发一个演示应用程序,它可能就足够了,

但是如果您认真考虑实施强大的身份验证和授权,那么您应该认真考虑学习任何开源安全框架。

这可以避免许多麻烦,特别是如果您的自定义为您的应用构建安全性。

答案 2 :(得分:0)

首先,选择一个吸引你的安全框架,如Sudhakar提出的Apache Shiro或Spring Security。要了解不同的安全框架,您可以在此处阅读Matt Raible对2011年的概述:Spring SecurityApache Shiro等。

接下来,如果您选择安全框架,您应该可以非常简单地关注Quentin的答案。

非常基本的方案将页面划分为基于角色的逻辑组(您希望一些):例如,路径为{{1}的页面(和/admin/users/edit)将针对具有管理员角色的人员admin/...(和/user/order/view)对注册用户等可见。如果需要更高级的设置您希望为特定用户角色呈现页面的部分,例如两个管理员都可以访问user/...,但仅当当前用户的角色等于管理员时才会呈现按钮删除。为了更好地保护应用程序,您选择的框架应该提供一种基于用户角色保护业务逻辑方法的方法。如果您选择Shiro,可能还会有一些特殊标记来简化视图创建,例如/user/edit

但是你的情况的基本解决方案是<shiro:hasRole>和支持bean方法<h:link rendered="#{currentUser.roleOne}"/>。当然,它只会隐藏链接,但用户仍然可以通过其URL访问该页面。因此,您最终将编写大部分Filter的样板代码或使用由广泛接受的安全框架提出的解决方案。