DevelopFilter.java 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package com.nuliji.tools.shiro;
  2. import com.nuliji.tools.shiro.inter.impl.RealmUsernamePasswordToken;
  3. import org.apache.shiro.authc.AuthenticationToken;
  4. import org.apache.shiro.subject.Subject;
  5. import org.apache.shiro.util.CollectionUtils;
  6. import org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter;
  7. import org.slf4j.Logger;
  8. import org.slf4j.LoggerFactory;
  9. import javax.servlet.ServletRequest;
  10. import javax.servlet.ServletResponse;
  11. import java.util.Set;
  12. /**
  13. * Created by GaoJie on 2017/11/3.
  14. */
  15. public class DevelopFilter extends BasicHttpAuthenticationFilter {
  16. private static final Logger logger = LoggerFactory.getLogger(DevelopFilter.class);
  17. @Override
  18. public boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) {
  19. Subject subject = getSubject(request, response);
  20. if(!subject.isAuthenticated() && !subject.isRemembered()){
  21. logger.debug("not login");
  22. return false;
  23. }
  24. String[] rolesArray = (String[])((String[])mappedValue);
  25. if(rolesArray != null && rolesArray.length != 0) {
  26. // subject.getPrincipals();
  27. Set<String> roles = CollectionUtils.asSet(rolesArray);
  28. for(String role: roles){
  29. if(subject.hasRole(role)) return true;
  30. logger.debug("not {}", role);
  31. }
  32. }
  33. return false;
  34. }
  35. @Override
  36. protected AuthenticationToken createToken(String username, String password, boolean rememberMe, String host) {
  37. RealmUsernamePasswordToken token = new RealmUsernamePasswordToken(username, password, DevelopRealm.class);
  38. token.setHost(host);
  39. token.setRememberMe(rememberMe);
  40. return token;
  41. }
  42. }