Spring安全核心插件:用户的不同主页,具体取决于其角色

sca*_*anE 0 grails spring-security

我在Grails应用程序中集成了Spring安全核心插件.

grails.plugins.springsecurity.successHandler.defaultTargetUrl = "/user/home"
Run Code Online (Sandbox Code Playgroud)

这是我在成功登录后设置默认主页所做的工作.但我希望根据用户角色拥有不同的主页

目前我有2个用户角色1)"ROLE_ADMIN"2)"ROLE_USER"

我该如何实现?

Bur*_*ith 6

一种快速方法是在控制器动作中执行逻辑.例如,home动作可以基于角色呈现不同的视图,例如

import org.codehaus.groovy.grails.plugins.springsecurity.SpringSecurityUtils

class UserController {
   def home() {
      String view
      if (SpringSecurityUtils.ifAllGranted('ROLE_ADMIN')) {
         view = 'admin'
      }
      else if (SpringSecurityUtils.ifAllGranted('ROLE_USER')) {
         view = 'user'
      }
      else {
         // ???
      }

      render view: view, model: [...]
   }
}
Run Code Online (Sandbox Code Playgroud)

如果您想要不同控制器中的逻辑,您可以根据角色重定向:

import org.codehaus.groovy.grails.plugins.springsecurity.SpringSecurityUtils

class UserController {
   def home() {

      if (SpringSecurityUtils.ifAllGranted('ROLE_ADMIN')) {
         redirect controller: '...', action: '...'
         return
      }
      if (SpringSecurityUtils.ifAllGranted('ROLE_USER')) {
         redirect controller: '...', action: '...'
         return
      }

      // ???
   }
}
Run Code Online (Sandbox Code Playgroud)