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; 
 | 
        } 
 | 
} 
 |