在某些应用场景下我们或许需要直接登录,而不需要用户输入密码,例如用户用手机直接登录的场景。
在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类。