springboot+shiro实现自定义header登录认证
基本配置
config子包的ShiroConfig引入了Shiro并配置了shirFilter、realm和sessionManager;
shiroFilter配置只允许少量url可以匿名访问,其他url都需要登录才能访问;
realm设置的是shiro子包的AdminAuthorizingRealm类,该类作用是认证和授权的功能;
sessionManager设置的是shiro子包的AdminWebSessionManager类,该类作用是重置会话管理器。
默认会话管理器是基于cookie实现会话保持,而这里是基于自定义头部实现会话保持。
经过以上步骤,shiro就配置正常。
当管理员登录时,先认证;
认证成功,则授权,在后端内保存roles和permissions;同时,在响应头部写入自定义头部和sessionId;
认证失败,则抛出认证异常;
管理员再次访问页面时,shiro通过自定义头自动认证成功。
ShiroConfig 类代码如下
package com.cnlink.authdemo.common;
import org.apache.shiro.mgt.SecurityManager;
import org.apache.shiro.session.mgt.SessionManager;
import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.LinkedHashMap;
import java.util.Map;
/**
*
* @Description:TODO(这里用一句话描述这个类的作用)
*
* @author: xc.deng
*
* @date:2019年7月1日 上午10:32:51
*
*/
@Configuration
public class ShiroConfig {
/**
* ShiroFilterFactoryBean 处理拦截资源文件问题。
* 注意:单独一个ShiroFilterFactoryBean配置是或报错的,以为在
* 初始化ShiroFilterFactoryBean的时候需要注入:SecurityManager
*
* Filter Chain定义说明 1、一个URL可以配置多个Filter,使用逗号分隔 2、当设置多个过滤器时,全部验证通过,才视为通过
* 3、部分过滤器可指定参数,如perm