【问题标题】:Grails springsecurity ldap show logged username [closed]Grails springsecurity ldap显示记录的用户名[关闭]
【发布时间】:2014-09-17 07:54:20
【问题描述】:

在我的 config.groovy 中,我有一些使用 springsecurity 插件进行 LDAP 身份验证的代码。

grails.plugin.springsecurity.ldap.context.managerDn = CN=user,OU=Accounts,OU=Users,DC=organization,DC=com'
grails.plugin.springsecurity.ldap.context.managerPassword = 'password'
grails.plugin.springsecurity.ldap.context.server = 'ldap://ldapserver.com:389/'
grails.plugin.springsecurity.ldap.authorities.ignorePartialResultException = true // typically needed for Active Directory
grails.plugin.springsecurity.ldap.search.base = 'DC=organization,DC=com'
grails.plugin.springsecurity.ldap.search.filter="(&(sAMAccountName={0})(|(memberOf=...)(memberOf=...)(memberOf=...)))"
grails.plugin.springsecurity.ldap.search.searchSubtree = true
grails.plugin.springsecurity.ldap.auth.hideUserNotFoundExceptions = false
grails.plugin.springsecurity.providerNames=['ldapAuthProvider']
grails.plugin.springsecurity.securityConfigType = "Annotation"
grails.plugin.springsecurity.controllerAnnotations.staticRules = [
   '/**': ['isFullyAuthenticated()']
]

它工作正常,但现在我需要在主页上显示登录的用户名以及登录的任何用户,执行一些操作。我怎么能这样做?

【问题讨论】:

    标签: grails groovy ldap


    【解决方案1】:

    你试过<sec:username/>吗?

    用户名

    如果已登录,则显示 UserDetails 用户名字段的值。

     <sec:ifLoggedIn>
         Welcome Back <sec:username/>!
     </sec:ifLoggedIn>
     <sec:ifNotLoggedIn>
         <g:link controller='login' action='auth'>Login</g:link>
     </sec:ifNotLoggedIn>
    

    【讨论】:

    • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
    • @theghostofc 谢谢,我从那里的文档中添加了一个引用。但是这个问题很模糊,所以我不想为此付出太多努力;)
    • 很好的解决方案!有帮助!
    【解决方案2】:

    如果你想在服务或控制器中获取用户名,你应该使用:

    def springSecurityService
    
    def someActionOrMethod(){
      println springSecurityService.currentUser.username
    }
    

    【讨论】: