shiro (八) spring结合 --自定义过滤器(角色篇)
package com.miv.shiro.common;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.subject.Subject;
import org.apache.shiro.web.filter.authz.AuthorizationFilter;
public class MIVshiroFilter extends AuthorizationFilter {
@Override
protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object weaving)
throws Exception {
// TODO Auto-generated method stub
Subject subject = SecurityUtils.getSubject();
String[] weaving_ = (String[]) weaving;
String[] rolesArray = weaving_[0].split(",");
if (rolesArray == null || rolesArray.length == 0) {
return true;
}
for (int i = 0; i < rolesArray.length; i++) {
if (subject.hasRole(rolesArray[i])) {
return true;
}
}
if (subject.isAuthenticated()) {// 认证
// subject.getSession().;
// ((HttpServletRequest) request).getSession().invalidate();
subject.logout();
} else if (subject.isRemembered()) {// 记住我
subject.logout();
// ((HttpServletRequest) request).getSession().invalidate();
} else {// 其他
}
subject.getSession().setAttribute("role_code", rolesArray);
return false;
}
}