问题描述
我是学生,是我们发展的新手。 我在使用Spring MVC开发Web应用程序时遇到了一个奇怪的问题。
我有一些权限来自数据库。 如果我授予用户“ userOne”到“ createRole”的权限,则“ userOne”登录- “创建角色”后可以在其仪表板上看到链接。 如果用户单击“创建角色”链接,则服务器将重定向到该url-/secure/roleManagement/createNewRole.html 。
请注意,如果撤消“ createRole”权限,则用户将无法看到“ Create Role ”链接。 但是即使在此之后,如果我在浏览器中输入url-/secure/roleManagement/createNewRole.html ,那么我仍可以访问创建角色页面,该页面不应出现在用户面前 。
那我怎么藏起来 我知道所提供的信息不足以回答,但请给出一些想法。 我坚持这一点。 我听说在这种情况下我可以使用spring授权来拦截url请求。 但是出于学习目的,我们不想使用它。 有什么主意吗
谢谢
1楼
我相信解决此问题的最佳方法是使用Spring Security名称空间并添加如下所示的拦截规则:
<intercept-url pattern="/secure/roleManagement/createNewRole"
access="hasRole(createRole)"
/>
但是,由于您不希望这样做,因此可以选择:
-
假设有一个控制器处理对
/secure/roleManagement/createNewRole.html
请求,您可以仅在开头添加一个验证,以检查用户是否具有所需角色。 - 在一个(或多个)过滤器中创建安全逻辑。 您可能有一个过滤器来拦截此特定的URL,然后为其他URL创建其他过滤器(这可能不是一个好主意,具体取决于您需要处理的URL数量),也可以有一个安全过滤器来处理所有这些URL。 。
这些选择基本上是实现Spring Security开箱即用的方法。