¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.shiro.realm; |
| | | |
| | | import com.yuanchu.limslaboratory.pojo.User; |
| | | import com.yuanchu.limslaboratory.shiro.JwtToken; |
| | | import com.yuanchu.limslaboratory.utils.RedisUtil; |
| | | 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; |
| | | |
| | | public class JwtRealm extends AuthorizingRealm { |
| | | /** |
| | | * éå®è¿ä¸ª Realm åªå¤çæä»¬èªå®ä¹ç JwtToken |
| | | */ |
| | | @Override |
| | | public boolean supports(AuthenticationToken token) { |
| | | return token instanceof JwtToken; |
| | | } |
| | | |
| | | /** |
| | | * æ¤å¤ç SimpleAuthenticationInfo å¯è¿åä»»æå¼ï¼å¯ç æ ¡éªæ¶ä¸ä¼ç¨å°å® |
| | | */ |
| | | @Override |
| | | protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authcToken) throws AuthenticationException { |
| | | JwtToken jwtToken = (JwtToken) authcToken; |
| | | if (jwtToken.getPrincipal() == null) { |
| | | throw new AccountException("Tokenåæ°å¼å¸¸ï¼"); |
| | | } |
| | | // å½åç¨æ· |
| | | String account = jwtToken.getPrincipal().toString(); |
| | | // å½åç¨æ·çtoken |
| | | String credentials = (String)jwtToken.getCredentials(); |
| | | User user = (User) RedisUtil.get(credentials); |
| | | // ç¨æ·ä¸åå¨ |
| | | if (user == null) { |
| | | throw new UnknownAccountException("ç¨æ·ä¸åå¨ï¼"); |
| | | } |
| | | SimpleAuthenticationInfo info = new SimpleAuthenticationInfo(user, account, getName()); |
| | | return info; |
| | | } |
| | | |
| | | @Override |
| | | protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { |
| | | SimpleAuthorizationInfo info = new SimpleAuthorizationInfo(); |
| | | return info; |
| | | } |
| | | } |