【问题标题】:Grails Spring Security verify access for multiple urlGrails Spring Security 验证多个 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 插件。

【问题讨论】:

    标签: spring grails spring-security gsp


    【解决方案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 方法可以做到这一点。谢谢,这是我目前的解决方案。
    猜你喜欢
    • 2018-01-04
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    • 2012-09-04
    • 2018-01-11
    • 2017-08-03
    • 2011-01-07
    • 2016-02-16
    相关资源
    最近更新 更多