在Spring安全性中,我们可以使用此构造限制对certaiin Web资源的访问:
<intercept-url pattern="/admin.xhtml" access="hasPermission('admin')" />
现在,我有很多页面,要访问每个页面,应该有一个与页面名称同名的特殊权限。 intercept-url
接受模式,但似乎没有提供从pattern
到access
的正则表达式匹配组的参数传递。我想要这样的东西:
<intercept-url pattern="/([a-z]+).xhtml" access="hasPermission('$1')" />
答案 0 :(得分:2)
很遗憾,您无法在访问规则中使用匹配的正则表达式组。 作为一种解决方法,您可以尝试定义自定义Web安全表达式。它将负责提取一些匹配的正则表达式组:
<intercept-url pattern="/([a-z]+).xhtml" access="hasPermission(extractGroup('$1', '/([a-z]+).xhtml'))" />
执行期间 extractGroup(...)方法将能够使用当前的HttpRequest。这个解决方案将有两个不利因素:1)它不是那么简单2)正则表达式模式将在你的conf中重复。如果您没问题,那么您可以阅读如何添加自定义Web安全表达式here。