用户名存储在一个连接的对象中
The user name is stored in an a connected object
我正在使用 grails,我有以下域 classes:
class User {
transient springSecurityService
String password
static belongsTo = [person: Person]
}
和
class Person {
String name
String emailAddress
....
}
我想使用人员对象的电子邮件地址作为 Spring 安全中的用户名。
根据 Spring 安全手册,只需将 grails.plugins.springsecurity.userLookup.usernamePropertyName
的 属性 设置为非 "username" 字段即可。
我试过 person.emailAddress,但没用。
如何获得 Spring 安全性以使用对用户的 Person 引用?我无法将密码放在 Person class 上,并且我尝试使用继承(这会带来其他问题)。
所以我将其追溯到 GormUserDetailsService,这是在其中被调用和实现的。用于查找用户的代码是:
def user = User.findWhere((conf.userLookup.usernamePropertyName): username)
if (!user) {
log.warn "User not found: $username"
我将如何构造 userNamePropertyName 以便我可以通过子 属性 查看它?
这是个坏主意。只需将电子邮件替换为用户,但如果您想亲自使用此字段,请为此字段创建 link。
class User {
transient springSecurityService
String password
String email
static belongsTo = [person: Person]
}
和人物:
class Person {
String name
String emailAddress
....
String getEmail(){
user.email //if relations OneToOne
}
static hasOne = [user:User] //if relations OneToOne
}
你应该保持关系OneToOne,因为我无法想象在什么情况下它应该是OneToMany
更新。或者你可以试试这个:
class 用户扩展人{..}
在 spring 安全配置中只写电子邮件,但我不确定。
我正在使用 grails,我有以下域 classes:
class User {
transient springSecurityService
String password
static belongsTo = [person: Person]
}
和
class Person {
String name
String emailAddress
....
}
我想使用人员对象的电子邮件地址作为 Spring 安全中的用户名。
根据 Spring 安全手册,只需将 grails.plugins.springsecurity.userLookup.usernamePropertyName
的 属性 设置为非 "username" 字段即可。
我试过 person.emailAddress,但没用。
如何获得 Spring 安全性以使用对用户的 Person 引用?我无法将密码放在 Person class 上,并且我尝试使用继承(这会带来其他问题)。
所以我将其追溯到 GormUserDetailsService,这是在其中被调用和实现的。用于查找用户的代码是:
def user = User.findWhere((conf.userLookup.usernamePropertyName): username)
if (!user) {
log.warn "User not found: $username"
我将如何构造 userNamePropertyName 以便我可以通过子 属性 查看它?
这是个坏主意。只需将电子邮件替换为用户,但如果您想亲自使用此字段,请为此字段创建 link。
class User {
transient springSecurityService
String password
String email
static belongsTo = [person: Person]
}
和人物:
class Person {
String name
String emailAddress
....
String getEmail(){
user.email //if relations OneToOne
}
static hasOne = [user:User] //if relations OneToOne
}
你应该保持关系OneToOne,因为我无法想象在什么情况下它应该是OneToMany
更新。或者你可以试试这个: class 用户扩展人{..} 在 spring 安全配置中只写电子邮件,但我不确定。