|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.alibaba.fastjson.JSON; | 
|---|
|  |  |  | import com.doumee.core.model.ApiResponse; | 
|---|
|  |  |  | import com.doumee.core.model.LoginUserInfo; | 
|---|
|  |  |  | import com.doumee.core.utils.Constants; | 
|---|
|  |  |  | import org.apache.shiro.cache.Cache; | 
|---|
|  |  |  | import org.apache.shiro.cache.MapCache; | 
|---|
|  |  |  | import org.apache.shiro.session.Session; | 
|---|
|  |  |  | import org.apache.shiro.session.mgt.DefaultSessionKey; | 
|---|
|  |  |  | import org.apache.shiro.session.mgt.SessionManager; | 
|---|
|  |  |  | import org.apache.shiro.subject.Subject; | 
|---|
|  |  |  | import org.apache.shiro.web.filter.authc.FormAuthenticationFilter; | 
|---|
|  |  |  | import org.springframework.http.HttpStatus; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import javax.servlet.ServletRequest; | 
|---|
|  |  |  | import javax.servlet.ServletResponse; | 
|---|
|  |  |  | import javax.servlet.http.HttpServletResponse; | 
|---|
|  |  |  | import java.io.Serializable; | 
|---|
|  |  |  | import java.util.Deque; | 
|---|
|  |  |  | import java.util.LinkedList; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * Shiro认证过滤器,处理未认证情况的响应 | 
|---|
|  |  |  | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public class ShiroAuthFilter extends FormAuthenticationFilter { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public ShiroAuthFilter() { | 
|---|
|  |  |  | super(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception { | 
|---|
|  |  |  | HttpServletResponse servletResponse = (HttpServletResponse) response; | 
|---|
|  |  |  | servletResponse.setHeader("content-type", "application/json;charset=UTF-8"); | 
|---|
|  |  |  | servletResponse.getWriter().write(JSON.toJSONString(ApiResponse.failed(HttpStatus.UNAUTHORIZED.value(), "未登录或登录信息已过期"))); | 
|---|
|  |  |  | return Boolean.FALSE; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | HttpServletResponse servletResponse = (HttpServletResponse) response; | 
|---|
|  |  |  | servletResponse.setHeader("content-type", "application/json;charset=UTF-8"); | 
|---|
|  |  |  | servletResponse.getWriter().write(JSON.toJSONString(ApiResponse.failed(HttpStatus.UNAUTHORIZED.value(), "未登录或登录信息已过期"))); | 
|---|
|  |  |  | return Boolean.FALSE; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|