用户角色的不同目标 URL

Posted

技术标签:

【中文标题】用户角色的不同目标 URL【英文标题】:Different target URLs for user roles 【发布时间】:2011-12-29 08:35:47 【问题描述】:

登录后如何根据用户角色配置不同的目标URL?我正在使用 Spring 安全插件。

【问题讨论】:

尝试在 *** 中搜索该问题。您的问题有很多问题。例如***.com/questions/6968210/… 这不是我想要做的。我想根据用户的角色在成功登录后将用户发送到不同的视图。例如,在成功登录后,具有 ROLL_USER 角色的用户被重定向到 userIndex.gsp,而具有 ROLL_ADMIN 角色的用户被重定向到 adminIndex.gsp。我猜这是一种解决方案:link 【参考方案1】:
<form-login
            login-processing-url="/user/login"
            login-page="/login"
            default-target-url="/loginsuccess"
            authentication-failure-url="/loginfailure" />

为什么在 Spring 控制器中检查了登录成功 url 上映射的用户角色后,您无法重定向到另一个页面?

【讨论】:

【参考方案2】:

我认为你可以定义一个 defaultTargetUrl,就像 Denis 在这个网站中提到或一样:Grails spring security 就像 hitty5 说的那样。

您可以根据用户的角色将重定向的逻辑放入默认请求的响应中。

使用 grails:

在 config.groovy 中

grails.plugins.springsecurity.successHandler.defaultTargetUrl = '/login/loggedIn'

在 LoginController 中(因为该控制器包含配置的默认操作)

@Secured(['ROLE_ADMIN', 'ROLE_DEFAULT'])
    def loggedIn = 
        Usuario user = springSecurityService.currentUser
        def roleDefault = Rol.findByAuthority("ROLE_DEFAULT")
        if(user.authorities.contains(roleDefault))
            redirect(controller: 'factura')
        def roleAdmin = Rol.findByAuthority("ROLE_ADMIN")
        if(user.authorities.contains(roleAdmin))
            redirect(controller: 'noticia')
    

希望对你有帮助……

【讨论】:

以上是关于用户角色的不同目标 URL的主要内容,如果未能解决你的问题,请参考以下文章

相同的 URL 路径,但根据用户角色加载不同的组件 - Angular

如何根据用户角色(尤其是可变产品)显示不同的产品价格? [复制]

在 .state 中使用 $rootScope 的不同用户角色的不同选项卡

Sonata Admin+ACL-不同角色的不同仪表板

Keycloak:用户基于角色的客户端登录访问限制

按用户角色设计注册编辑?