我想验证用户是否可以在一个 View 中访问多个URL,如下所示:
<sec:access url="/user,/client">
就像sec:ifAnyGranted角色标记一样:
<sec:ifAnyGranted roles="ROLE_ADMIN,ROLE_SUPERVISOR">
在我的验证中, sec:access网址仅适用于一个网址。
有什么办法或替代方法吗?
我使用grails的spring-security-core:2.0-RC2插件。
最佳答案
我不支持多个URL。您可以创建自己的标签来执行以下操作
class CustomTagLib {
static namespace = "myTag"
def ifAnyGranted = { attrs, body ->
List<String> urls = attrs.remove('urls').split(',')
Boolean hasAccess = Boolean.FALSE
for (int i = 0; i < urls.size(); i++) {
hasAccess = sec.access(url: urls.get(i).trim()) { Boolean.TRUE }
if (hasAccess) {
out << body()
break
}
}
}
}
并在如下 View 中使用它:
<myTag:ifAnyGranted urls="/domain/index,/domain/show">
Something to display if has access to anyone of the URL
</myTag:ifAnyGranted>
关于spring - Grails Spring Security验证对多个URL的访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23831929/