在某些应用场景下我们或许需要直接登录,而不需要用户输入密码,例如用户用手机直接登录的场景。
在Shiro中我们通过在线程变量中绑定一个已通过验证的Subject对象即可实现。
PrincipalCollection principals = new SimplePrincipalCollection( user.getId(), "MobileRealm"); Builder builder = new WebSubject.Builder( ServletActionContext.getRequest(), ServletActionContext.getResponse()); builder.principals(principals); builder.authenticated(true); WebSubject subject = builder.buildWebSubject(); ThreadContext.bind(subject);
以上是用于Web Application的代码,所以用的是WebSubject,应根据自己的应用选择需要创建的Subject类。