Grails如何在 Controller 上调用MyUserDetailsS​​ervice?

标签 grails service spring-security

我有自定义 MyUserDetailsS​​ervice

class MyUserDetailsService implements GrailsUserDetailsService {
 ...
}

我想调用我的 Controller
class MyController {
    def springSecurityService

    def check() {
        String user = springSecurityService.principal.username
        def MyUserdetails = MyUserDetailsService.loadUserByUsername(user)
    }
}

并得到错误

No signature of method: static MyUserDetailsService.loadUserByUsername() is applicable for argument types: (java.lang.String) values: [user] Possible solutions: loadUserByUsername(java.lang.String), loadUserByUsername(java.lang.String, boolean)



我想在登录后检查用户,所以我不把它放在 bean 中。

最佳答案

我相信您会在文件 grails-app/conf/spring/resources.groovy 中使用 Grails 注册您的自定义用户详细信息服务,例如:

beans = {
    userDetailsService(com.mycompany.myapp.MyUserDetailsService)
}

注册后,您可以通过在 Controller 中声明 userDetailsS​​ervice 变量并使用它来依赖 Grails 自动服务注入(inject),例如:
class SomeController {
    def userDetailsService
    ...
    def someAction() {
        String user = springSecurityService.principal.username
        CustomUserDetails userdetails = userDetailsService.loadUserByUsername(user)
    }
}

文档 here很有帮助。

关于Grails如何在 Controller 上调用MyUserDetailsS​​ervice?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15048655/

相关文章:

grails - 如何从 Controller 中的参数中提取列表

Grails test-app 没有执行所有的测试

java - Spring Security 使用 sql 查询对管理员进行身份验证

java - 使用 @EnableWebSecurity 时,至少有一个非空 i..... 作为 @Bean。提示尝试扩展 WebSecurityConfigurerAdapter

java - 修改配置文件数据、服务或 Controller ?

rest - 使用 @PreAuthorize 时从 Spring Controller 返回的 405 与 403

grails - 登录页面将在Chrome中访问favicon

grails - 如何在Grails中访问两个数据库

.net - 如何通过 .NET 网络更新应用程序?

.net - Windows 服务中定时器的使用