【发布时间】:2015-06-26 12:20:31
【问题描述】:
我正在使用 grails,并且我有以下域类:
class User {
transient springSecurityService
String password
static belongsTo = [person: Person]
}
和
class Person {
String name
String emailAddress
....
}
我想在 Spring Security 中使用 person 对象的电子邮件地址作为用户名。
根据 Spring Security 手册,只需将grails.plugins.springsecurity.userLookup.usernamePropertyName 的属性设置为非“用户名”字段。
我已经尝试过 person.emailAddress,但它不起作用。
如何获得 Spring 安全性以使用对用户的 Person 引用?我无法将密码放在 Person 类上,并且我尝试使用继承(这会带来其他问题)。
所以我已将其追溯到GormUserDetailsService,它被调用和实现。用于查找用户的代码是:
def user = User.findWhere((conf.userLookup.usernamePropertyName): username)
if (!user) {
log.warn "User not found: $username"
我将如何构造 userNamePropertyName 以便可以通过子属性查看它?
【问题讨论】:
-
实际代码有助于解决要点
-
你能发布 Person 和 User 域类吗?