Привет всем, В одном из моих проектов мне нужно расширить пользователя (User class) и добавить тип. Добавили поле в модель: Код | package com.iibs
import com.iibs.account.Account import com.iibs.security.UserType;
class User {
transient springSecurityService
String username String password boolean enabled = true boolean accountExpired boolean accountLocked boolean passwordExpired UserType type = UserType.CUSTOMER Account account static transients = ['springSecurityService'] static optionals = ['account'] static constraints = { username blank: false, unique: true password blank: false account nullable: true }
static mapping = { password column: '`password`' type column: '`type`', enumType: "ordinal" }
Set<Role> getAuthorities() { UserRole.findAllByUser(this).collect { it.role } as Set }
def beforeInsert() { encodePassword() }
def beforeUpdate() { if (isDirty('password')) { encodePassword() } }
protected void encodePassword() { password = springSecurityService.encodePassword(password) } }
|
создали новый UserDetails: Код | package com.iibs.security
import java.util.Collection; import org.springframework.security.core.GrantedAuthority; import grails.plugin.springsecurity.userdetails.GrailsUser /** * This class defines custom User Details for this application * * @author AlexAgulyansky */ class TypedUserDetails extends GrailsUser { final String type
public TypedUserDetails(GrailsUser grailsUser) { super(grailsUser.username, grailsUser.password, grailsUser.enabled, grailsUser.accountNonExpired, grailsUser.credentialsNonExpired, grailsUser.accountNonLocked, grailsUser.authorities, grailsUser.id); } }
|
создали новый UserDetailsService Код | package com.iibs.security
import grails.plugin.springsecurity.SpringSecurityUtils import grails.plugin.springsecurity.userdetails.GormUserDetailsService import grails.plugin.springsecurity.userdetails.GrailsUser import org.springframework.security.core.userdetails.UserDetails import org.springframework.security.core.GrantedAuthority
class TypedUserDetailsService extends GormUserDetailsService { @Override protected UserDetails createUserDetails(user, Collection<GrantedAuthority> authorities) { GrailsUser gUser = super.createUserDetails(user, authorities); TypedUserDetails userDetails = new TypedUserDetails(grailsUser) gUser = null userDetails.type = user.type.toString() return userDetails } }
|
Когда прогоняю и пытаюсь сделать логин то оне просто сообщается что пользователь не найден. Код | GrailsUser gUser = super.createUserDetails(user, authorities);
|
Возвращает валидного пользователя. Код | TypedUserDetails userDetails = new TypedUserDetails(grailsUser)
|
Выподает, но не сообщая ничего. Даже в debug mode. Что я пропускаю?
--------------------
Если долго мучиться, что нибудь получится...
|