我有自定义 MyUserDetailsService
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 中声明 userDetailsService 变量并使用它来依赖 Grails 自动服务注入(inject),例如:
class SomeController {
def userDetailsService
...
def someAction() {
String user = springSecurityService.principal.username
CustomUserDetails userdetails = userDetailsService.loadUserByUsername(user)
}
}
文档 here很有帮助。
关于Grails如何在 Controller 上调用MyUserDetailsService?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15048655/