首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Grails和Spring Security:如何从控制器中获取经过身份验证的用户?

Grails和Spring Security:如何从控制器中获取经过身份验证的用户?
EN

Stack Overflow用户
提问于 2009-04-21 23:09:14
回答 6查看 21.2K关注 0票数 12

我最近从JSecurity插件转到了Spring Security。如何从控制器中获取经过身份验证的用户?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-04-22 00:50:31

我使用的是0.5.1,下面的代码对我有效:

代码语言:javascript
复制
class EventController {
  def authenticateService

  def list = { 
     def user = authenticateService.principal() 
     def username = user?.getUsername()
     .....
     .....
  } 
}
票数 10
EN

Stack Overflow用户

发布于 2009-04-22 06:13:10

它目前没有文档,但是在插件安装文件中,有3个方法可以添加到每个控制器中,这样你就不需要注入authenticationService了:

代码语言:javascript
复制
private void addControllerMethods(MetaClass mc) {
    mc.getAuthUserDomain = {
        def principal = SCH.context?.authentication?.principal
        if (principal != null && principal != 'anonymousUser') {
            return principal?.domainClass
        }

        return null
    }

    mc.getPrincipalInfo = {
        return SCH.context?.authentication?.principal
    }

    mc.isUserLogon = {
        def principal = SCH.context?.authentication?.principal
        return principal != null && principal != 'anonymousUser'
    }
}

这意味着您可以直接调用

代码语言:javascript
复制
principalInfo

来获取主体对象。它还有"isUserLogin“用于查看用户是否已登录,"authUserDomain”用于获取与已登录用户的主体相关联的实际域类实例( Person/ user )。

票数 15
EN

Stack Overflow用户

发布于 2011-06-08 03:28:55

下面的代码来自Spring Security Core Plugin (Version: 1.1.2) - Reference Documentation - Section 6.2

grails.plugins.springsecurity.SpringSecurityService提供了安全实用程序功能。它是一个常规的Grails服务,因此您可以使用依赖注入将其注入到控制器、服务、标记库等中:

代码语言:javascript
复制
class SomeController {
    def springSecurityService
    def someAction = { 
        def user = springSecurityService.currentUser 
        …
    } 
}
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/775053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档