【问题标题】:Cant find where authenticationTrustResolver.isAnonymous() is defined找不到 authenticationTrustResolver.isAnonymous() 的定义位置
【发布时间】:2013-12-16 19:27:55
【问题描述】:

我正在查看 SpringSecurityService.groovy 文件(grails.plugins.springsecurity 包的一部分),他们有一些让我感到困惑的代码行。

import javax.servlet.http.HttpServletRequest
import org.codehaus.groovy.grails.plugins.springsecurity.SpringSecurityUtils
import org.springframework.security.core.Authentication
import org.springframework.security.core.context.SecurityContextHolder as SCH
import org.springframework.security.web.access.intercept.FilterInvocationSecurityMetadataSource

class SpringSecurityService {

    /** dependency injection for authenticationTrustResolver */
    def authenticationTrustResolver

....
....

    boolean isLoggedIn() {
        def authentication = SCH.context.authentication
        authentication && !authenticationTrustResolver.isAnonymous(authentication)
    }

....

这些是文件中提到authenticationTrustResolver 的所有地方。我的问题是,authenticationTrustResolver.isAnonymous() 在哪里定义?我查看了导入的文件,但它似乎不在其中。我认为该功能可能会给我带来一些麻烦,但我不知道如何查看其代码。

【问题讨论】:

    标签: grails groovy spring-security


    【解决方案1】:

    例如,Grails 在服务、控制器和 TagLibs 中使用依赖注入的概念。这意味着您可以声明一个属性(在本例中为 authenticationTrustResolver),并且当您使用服务实例时,您的依赖项实例已经存在。

    Grails plugins 有一个带有插件名称的特殊类,您可以在其中声明此依赖项。该名称始终以 GrailsPlugin.groovy 结尾,因此在本例中为 SpringSecurityCoreGrailsPlugin

    doWithSpring 闭包中,插件定义了他的bean:

    def doWithSpring = {
      ...
      /** authenticationTrustResolver */
      authenticationTrustResolver(AuthenticationTrustResolverImpl) {
        anonymousClass = conf.atr.anonymousClass
        rememberMeClass = conf.atr.rememberMeClass
      }
      ...
    }
    

    您可以查看更多关于Grails and Spring in the docs的信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多