| package com.doumee.config.shiro; | 
|   | 
| 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认证过滤器,处理未认证情况的响应 | 
|  * @author Eva.Caesar Liu | 
|  * @date 2023/04/17 12:11 | 
|  */ | 
| public class ShiroAuthFilter extends FormAuthenticationFilter { | 
|   | 
|         @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; | 
|         } | 
| } |