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 - 登录没有用户名密码令牌的用户的主要内容,如果未能解决你的问题,请参考以下文章

如何在我的项目中实现 Grails 的 Shiro 安全性

Grails 3 Spring Security 覆盖登录表单

无法使用 grails 通过 CAS 单点登录登录

使用 Grails 创建 Google 登录

如何设置永远记住我或登录grails?

Grails/SpringSecurity:登录和注销