ShiroHelp.java 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package com.qxgmat.help;
  2. import com.qxgmat.data.dao.entity.Manager;
  3. import com.qxgmat.data.dao.entity.User;
  4. import com.qxgmat.util.shiro.ManagerRealm;
  5. import com.qxgmat.util.shiro.OauthRealm;
  6. import com.qxgmat.util.shiro.UserRealm;
  7. import com.nuliji.tools.shiro.inter.impl.RealmUsernamePasswordToken;
  8. import org.apache.shiro.SecurityUtils;
  9. import org.apache.shiro.subject.PrincipalCollection;
  10. import org.apache.shiro.subject.Subject;
  11. import org.springframework.stereotype.Service;
  12. import java.util.Collection;
  13. /**
  14. * Created by GaoJie on 2017/07/31.
  15. */
  16. @Service
  17. public class ShiroHelp{
  18. public Subject getSession() {
  19. return SecurityUtils.getSubject();
  20. }
  21. public User getLoginUser() {
  22. return getLogin(User.class);
  23. }
  24. public Manager getLoginManager(){
  25. return getLogin(Manager.class);
  26. }
  27. public RealmUsernamePasswordToken user(String username, String password){
  28. return new RealmUsernamePasswordToken(username, password, UserRealm.class);
  29. }
  30. public RealmUsernamePasswordToken manager(String username, String password){
  31. return new RealmUsernamePasswordToken(username, password, ManagerRealm.class);
  32. }
  33. public RealmUsernamePasswordToken oauth(String code, String platform){
  34. return new RealmUsernamePasswordToken(code, platform, OauthRealm.class);
  35. }
  36. public RealmUsernamePasswordToken user(String username, String password, Boolean remember){
  37. return new RealmUsernamePasswordToken(username, password, remember == null ? false : remember, UserRealm.class);
  38. }
  39. public RealmUsernamePasswordToken manager(String username, String password, Boolean remember){
  40. return new RealmUsernamePasswordToken(username, password, remember == null ? false : remember, ManagerRealm.class);
  41. }
  42. public RealmUsernamePasswordToken oauth(String code, String platform, Boolean userInfo){
  43. return new RealmUsernamePasswordToken(code, platform, userInfo == null ? false : userInfo, OauthRealm.class);
  44. }
  45. public <T> T getLogin(Class<T> clazz){
  46. PrincipalCollection pc = SecurityUtils.getSubject().getPrincipals();
  47. if(pc == null) return null;
  48. Collection c = pc.byType(clazz);
  49. return c.size() > 0 ? (T) c.toArray()[0] : null;
  50. }
  51. public void logout() {
  52. Subject subject = getSession();
  53. subject.logout();
  54. // RealmSecurityManager sm = (RealmSecurityManager)SecurityUtils.getSecurityManager();
  55. // Iterator var3 = sm.getRealms().iterator();
  56. //
  57. // Realm realm;
  58. // while(var3.hasNext()){
  59. // realm = (Realm)var3.next();
  60. // }
  61. }
  62. public void refresh(){
  63. getSession().getSession().touch();
  64. }
  65. }