TokenRealm.java 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package com.qxgmat.util.shiro;
  2. import com.nuliji.tools.shiro.inter.RealmAuthenticationToken;
  3. import com.qxgmat.data.dao.entity.User;
  4. import com.qxgmat.service.UsersService;
  5. import org.apache.commons.lang.time.FastDateFormat;
  6. import org.apache.shiro.authc.*;
  7. import org.apache.shiro.authc.credential.CredentialsMatcher;
  8. import org.apache.shiro.authz.AuthorizationInfo;
  9. import org.apache.shiro.authz.SimpleAuthorizationInfo;
  10. import org.apache.shiro.cache.CacheManager;
  11. import org.apache.shiro.realm.AuthorizingRealm;
  12. import org.apache.shiro.subject.PrincipalCollection;
  13. import org.slf4j.Logger;
  14. import org.slf4j.LoggerFactory;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import java.util.ArrayList;
  17. import java.util.Objects;
  18. /**
  19. * Created by GaoJie on 2017/11/3.
  20. */
  21. public class TokenRealm extends AuthorizingRealm {
  22. private static final FastDateFormat dateFormat = FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss");
  23. private static final Logger logger = LoggerFactory.getLogger(TokenRealm.class);
  24. @Autowired
  25. private UsersService usersService;
  26. public TokenRealm() {
  27. super();
  28. setAuthenticationTokenClass(AuthenticationToken.class);
  29. }
  30. @Override
  31. protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
  32. String className = TokenRealm.class.getName();
  33. boolean selected = false;
  34. for(String realmNames: principalCollection.getRealmNames()){
  35. if(realmNames.contains(className)) selected = true;
  36. }
  37. if(!selected) return null;
  38. ArrayList<String> roleAuthorization = new ArrayList<String>();
  39. SimpleAuthorizationInfo sa = new SimpleAuthorizationInfo();
  40. roleAuthorization.add("user");
  41. sa.addRoles(roleAuthorization);
  42. return sa;
  43. }
  44. @Override
  45. protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException {
  46. AuthenticationToken token = (AuthenticationToken) authenticationToken;
  47. String username = (String)token.getCredentials();
  48. logger.info("Login token: "+username);
  49. User user = usersService.getUserByToken(username);
  50. if (user == null || user.getId() <= 0) {
  51. throw new UnknownAccountException("用户不存在!");
  52. }
  53. return new SimpleAuthenticationInfo(user, username, getName());
  54. }
  55. protected void assertCredentialsMatch(AuthenticationToken token, AuthenticationInfo info) throws AuthenticationException {
  56. }
  57. }