我在我的but应用程序中隐藏了一些链接,这取决于用户roles...Now。例如,我在角色等于1的用户中隐藏了链接sample.jsp。当然,这会隐藏,但如果这个用户知道链接,他最终可以转到该link...How进行配置吗?
发布于 2013-02-10 21:10:47
当有人访问该链接所指向的URL时,检查他们是否已通过身份验证(如果没有,则向他们显示登录页面),以及他们通过身份验证的用户是否有权访问该页面(如果没有,则向他们显示一条错误消息,解释这一点,并给他们一个“以不同用户身份登录”表单)。
发布于 2013-02-10 21:55:35
Quentin建议应该可以做到,如果你正在开发一个演示应用程序,这可能就足够了。
但是,如果您真的想实现健壮的身份验证和授权,那么在学习任何开源安全框架时都应该认真考虑一下。
这可以避免很多令人头疼的问题,特别是如果你为你的应用定制了一个安全机制。
reference guide
发布于 2013-02-12 00:38:02
首先,根据Sudhakar的建议,选择一个吸引您的安全框架,比如Apache Shiro或Spring Security。为了理解不同的安全框架,你可能会喜欢Matt Raible在这里对2011的概述:Spring Security和Apache Shiro,以及其他。
接下来,如果您选择了安全框架,您应该能够非常简单地遵循Quentin的答案。
最基本的方案是基于角色将页面划分为逻辑组(您应该有几个角色):例如,路径为/admin/users/edit (和admin/...)的页面将针对具有管理员角色的人员,/user/order/view (和user/...)将对注册用户可见,等等。如果您希望为特定用户角色呈现页面的某些部分,则需要更高级的设置,例如两个管理员都将访问/user/edit,但只有当当前用户的角色等于管理员时,才会呈现按钮delete。为了更好地保护应用程序,您选择的框架应该提供一种基于用户角色保护业务逻辑方法的方法。如果你选择Shiro,也可能有一些特殊的标签来简化视图的创建,比如<shiro:hasRole>。
但是,对于您的情况,基本的解决方案是使用支持bean方法public boolean isRoleOne() { return role.equals("1"); }的<h:link rendered="#{currentUser.roleOne}"/>。当然,它只会隐藏链接,但用户仍然可以通过其url访问页面。因此,您最终要么编写筛选器的样板代码,要么使用公认的安全框架提出的解决方案。
https://stackoverflow.com/questions/14797958
复制相似问题