Grails Spring Security 验证多个 url 的访问
Posted
技术标签:
【中文标题】Grails Spring Security 验证多个 url 的访问【英文标题】:Grails Spring Security verify access for multiple url 【发布时间】:2014-07-12 23:20:46 【问题描述】:我想在视图中验证用户是否可以访问多个网址,如下所示:
<sec:access url="/user,/client">
就像角色的 sec:ifAnyGranted 标签:
<sec:ifAnyGranted roles="ROLE_ADMIN,ROLE_SUPERVISOR">
在我的验证中,sec:access url 只适用于一个 url。 有什么办法或替代方法吗?
我正在为 grails 使用 spring-security-core:2.0-RC2 插件。
【问题讨论】:
【参考方案1】:我不支持多个 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
并在视图中使用它:
<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 的访问的主要内容,如果未能解决你的问题,请参考以下文章
Grails Spring-Security-Core 插件 - 无法验证用户
来自服务的 Grails Spring Security 身份验证
如何使用 spring-security-core-ldap 插件在 grails 中实现 LDAP 身份验证?
没有身份验证的 Grails Spring Security 插件访问控制/授权?
如何在 Grails 中使用 spring security rest 插件进行身份验证
Grails:Spring Security Core 自定义身份验证 getUserByUserName 返回 null 对象