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

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

【问题讨论】:

  • 尝试在 stackoverflow 中搜索该问题。您的问题有很多问题。例如stackoverflow.com/questions/6968210/…
  • 这不是我想要做的。我想根据用户的角色在成功登录后将用户发送到不同的视图。例如,在成功登录后,具有 ROLL_USER 角色的用户被重定向到 userIndex.gsp,而具有 ROLL_ADMIN 角色的用户被重定向到 adminIndex.gsp。我猜这是一种解决方案:link

标签: grails login spring-security


【解决方案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')
        }
    

    希望对你有帮助……

    【讨论】:

      猜你喜欢
      • 2021-10-10
      • 2022-01-13
      • 2011-06-05
      • 1970-01-01
      • 2013-10-25
      • 1970-01-01
      • 2018-01-08
      • 2016-01-16
      • 2011-03-10
      相关资源
      最近更新 更多