package com.yuanchu.limslaboratory.shiro.realm; import com.yuanchu.limslaboratory.pojo.User; import com.yuanchu.limslaboratory.service.UserService; import com.yuanchu.limslaboratory.utils.SpringUtil; import org.apache.shiro.authc.*; import org.apache.shiro.authz.AuthorizationInfo; import org.apache.shiro.realm.AuthorizingRealm; import org.apache.shiro.subject.PrincipalCollection; import org.springframework.util.ObjectUtils; public class ShiroRealm extends AuthorizingRealm { public User user; /** * 限定这个 Realm 只处理 UsernamePasswordToken */ @Override public boolean supports(AuthenticationToken token) { return token instanceof UsernamePasswordToken; } @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) { return null; } @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) { String principal = (String) authenticationToken.getPrincipal(); //获取UserService对象 UserService userService = SpringUtil.getBean(UserService.class); user = userService.AccordingUsernameSelectAll(principal); if (!ObjectUtils.isEmpty(user)) { return new SimpleAuthenticationInfo(user.getAccount(), user.getPassword(), this.getName()); } else { throw new UnknownAccountException(); } } }