Files
Tbed/src/main/java/cn/hellohao/auth/shiro/UserRealm.java
T
2021-10-29 14:23:40 +08:00

58 lines
1.8 KiB
Java

package cn.hellohao.auth.shiro;
import cn.hellohao.pojo.User;
import cn.hellohao.service.UserService;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.*;
import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.authz.SimpleAuthorizationInfo;
import org.apache.shiro.realm.AuthorizingRealm;
import org.apache.shiro.subject.PrincipalCollection;
import org.apache.shiro.subject.Subject;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.ArrayList;
/*
* @author Hellohao
* @version 1.0
* @date 2021/6/3 10:39
* 自定义UserRealm
*/
public class UserRealm extends AuthorizingRealm {
@Autowired
private UserService userService;
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
Subject subject = SecurityUtils.getSubject();
User user = (User) subject.getPrincipal();
ArrayList<String> roleList = new ArrayList();
if(user.getLevel()==2){
roleList.add("admin");
roleList.add("user");
}else{
roleList.add("user");
}
info.addRoles(roleList);
return info;
}
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken tokenOBJ) throws AuthenticationException {
UsernamePasswordToken userToken = null;
userToken = (UsernamePasswordToken)tokenOBJ;
User user = new User();
user.setEmail(userToken.getUsername());
User u = userService.getUsers(user);
if(u==null){
return null;
}
//密码认证(防止泄露,不需要我们做)
return new SimpleAuthenticationInfo(u,u.getPassword(),"");
}
}