根据权限

时间:2015-07-30 18:00:51

标签: java spring jsp authorization

我是学生,也是我们发展的新手。当我使用spring MVC开发Web应用程序时,我遇到了一个奇怪的问题。

我有一些来自数据库的权限。如果我将用户 - “userOne”提供给“createRole”权限,那么“userOne”会在登录后在其信息中心上看到一个链接 - “创建角色”。如果用户点击“创建角色”链接,则服务器会重定向到此网址 - /secure/roleManagement/createNewRole.html

请注意,如果撤消“createRole”权限,则用户将无法看到“创建角色”链接。但即便如此,如果我在浏览器中输入网址 - /secure/roleManagement/createNewRole.html ,我就可以访问创建角色页面,该页面不应该出现在用户面前。

那我怎么能隐藏这个呢。我知道所提供的信息不足以回答,但请提出一些想法。我坚持这个。我听说在这种情况下我可以使用spring授权拦截url请求。但出于学习目的,我们不想使用它。有什么想法吗?

由于

1 个答案:

答案 0 :(得分:1)

我认为解决这个问题的最佳方法是使用Spring Security命名空间并添加如下的拦截规则:

<intercept-url pattern="/secure/roleManagement/createNewRole" 
               access="hasRole(createRole)" 
/>

但是既然你不想要那个,那么替代方案就是:

  1. 假设有一个控制器处理对/secure/roleManagement/createNewRole.html的请求,您可以在开头添加一个验证用户是否具有所需角色的验证。
  2. 在一个(或多个)过滤器中创建安全逻辑。您可以使用过滤器拦截此特定URL,然后为其他URL创建其他URL(根据您需要处理的URL数量,这可能不是一个好主意),或者您可以使用一个安全过滤器来处理所有这些URL
  3. 替代方案基本上是实现Spring Security提供的开箱即用的方法。