1. 自定义登录类型枚举
package com.smartsite.framework.shiro.enums;
/**
* @ClassName LoginType
* @Description Shiro认证枚举
* @Author wangyj
* @Date 22/5/12
*/
public enum LoginType {
/** 密码登录 */
PASSWORD("PASSWORD"),
/** 密码登录 */
NOPASSWD("NOPASSWORD");
/** 状态值 */
private String code;
private LoginType(String code) {
this.code = code;
}
public String getCode() {
return code;
}
}
2. 自定义登录认证规则
package com.smartsite.framework.shiro.token;
import com.smartsite.framework.shiro.enums.LoginType;
import org.apache.shiro.authc.UsernamePasswordToken;
/**
* @author wangyj
* @className CustomToken
* @description
* @date 22/5/12
*/
public class CustomToken extends UsernamePasswordToken {
private static final long serialVersionUID = -2564928913725078138L;
private LoginType type;
public CustomToken() {
super();
}
/**
* 免密登录
*/
public CustomToken(String username) {
super(username, "", false, null);
this.type = LoginType.NOPASSWD;
}
/**
* 账号密码登录
*/
public CustomToken(String username, String password, boolean rememberMe) {
super(username, password, rememberMe, null);
this.type = LoginType.PASSWORD;
}
public LoginType getType

本文介绍了如何在Shiro框架中自定义登录类型(密码登录、免密登录),定制登录认证规则,以及如何在UserRealm中根据登录类型执行不同逻辑。还展示了如何创建CustomToken并替换默认Token,以及修改shiro配置以配合自定义逻辑。
最低0.47元/天 解锁文章
3479





