Grails:ShiroSecurity - 使用UsernamePasswordToken登录用户

时间:2011-10-07 12:09:33

标签: authentication grails shiro

验证用户的常用方法是调用:

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 个答案:

答案 0 :(得分:0)

我设法解决了这个问题。我创建了自己的类来实现AuthenticationToken接口:

class UsernameToken implements AuthenticationToken{

  private username;

  public UsernameToken(String username) {
    this.username = username;
  }

  public String getPrincipal() {
    return username;
  }
  public String getCredentials() {
    return username;
  }
}

并创建了新的Realm,它与默认的Realm完全相同但没有密码验证。现在我可以使用

SecurityUtils.subject.login(new UsernameToken(user.username))