Grails:ShiroSecurity - 登录没有用户名密码令牌的用户
Posted
技术标签:
【中文标题】Grails:ShiroSecurity - 登录没有用户名密码令牌的用户【英文标题】:Grails: ShiroSecurity - log in user without UsernamePasswordToken 【发布时间】:2011-12-02 23:23:40 【问题描述】:验证用户的常用方法是调用:
SecurityUtils.subject.login(new UsernamePasswordToken(params.username, params.password))
但是,如果我想让他自动登录,而无需输入用户名和密码,该怎么办?我在 userService 中创建了这样的方法:
def logIn(User user)
Object userIdentity = user.email
String realmName = "ShiroDbRealm";
PrincipalCollection principals = new SimplePrincipalCollection(userIdentity, realmName);
Subject subject = new Subject.Builder().principals(principals).buildSubject();
ThreadContext.bind(subject)
但这不起作用,有什么提示吗?
【问题讨论】:
【参考方案1】:我已经设法解决了这个问题。我创建了自己的实现 AuthenticationToken 接口的类:
class UsernameToken implements AuthenticationToken
private username;
public UsernameToken(String username)
this.username = username;
public String getPrincipal()
return username;
public String getCredentials()
return username;
并创建了新的领域,它看起来与默认领域完全相同,但没有密码验证。现在我可以使用了
SecurityUtils.subject.login(new UsernameToken(user.username))
【讨论】:
以上是关于Grails:ShiroSecurity - 登录没有用户名密码令牌的用户的主要内容,如果未能解决你的问题,请参考以下文章