最近考虑给自己的平台增加新的登陆方式,上网查了一下相关的资料
.我用的权限平台为shiro,如果要实现,需要实现多个Realm,我个人觉得这种方法有点麻烦,每增加一种登陆方式,都要实现Realm,就希望有一些简单的办法.
整理需求如下:
支持普通的用户密码验证
密码验证可以让用户自由扩展,不一定是md5
支持用户免密码验证
新增登陆方式时,如需要新增手机号登陆,最少改动原有的代码
经思考,实现如下:
1.先实现自定义对象UsernamePasswordToken
@Data
public class UserNameLoginToken extends UsernamePasswordToken implements Serializable {
/**
* 登陆类型
*/
private String loginType;
public UserNameLoginToken() {
super();
}
public UserNameLoginToken(final String username, final String password) {
super(username, password);
}
/**
*是否需要密码校验
*/
private boolean requriedPassword;
public static UserNameLoginToken buildNoPassword(String username, String loginType) {
UserNameLoginToken userNameLoginToken = new UserNameLoginToken();
userNameLoginToken.setUsername(username);
userNameLoginToken.setLoginType(loginType);
userNameLoginToken.setRequriedPassword(false);
return userNameLoginToken;
}
public static UserNameLoginToken buildPassword(String username, String password, String loginType) {
UserNameLoginToken userNameLoginToken = new UserNameLoginToken(username, password);
userNameLoginToken.setLoginType(loginType);
userNameLoginToken.