微服务 教程
1085个小节阅读:195.6k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
在以上案例中,虽然有认证功能,但即使没有登录也可以访问系统资源。如果要配置认证后才能访问资源,就需要使用过滤器拦截请求。Shiro内置了很多过滤器:
过滤器 | 过滤器类 | 说明 |
---|---|---|
anon | AnonymousFilter | 配置不需要登录即可访问的资源 |
authc | FormAuthenticationFilter | 配置登录认证后才可以访问的资源 |
user | UserFilter | 配置登录认证或“记住我”认证后才可以访问的资源 |
过滤器工厂配置过滤器链:
xxxxxxxxxx
// 配置过滤器
@Bean
public ShiroFilterFactoryBean shiroFilterFactoryBean(DefaultWebSecurityManager securityManager){
// 1.创建过滤器工厂
ShiroFilterFactoryBean filterFactory=new ShiroFilterFactoryBean();
// 2.过滤器工厂设置SecurityManager
filterFactory.setSecurityManager(securityManager);
// 3.设置shiro的拦截规则
Map<String,String> filterMap=new HashMap<>();
// 不拦截的资源
filterMap.put("/login.html","anon");
filterMap.put("/fail.html","anon");
filterMap.put("/user/login","anon");
filterMap.put("/css/**","anon");
// 其余资源都需要用户认证
filterMap.put("/**","authc");
// 4.将拦截规则设置给过滤器工厂
filterFactory.setFilterChainDefinitionMap(filterMap);
// 5.登录页面
filterFactory.setLoginUrl("/login.html");
return filterFactory;
}
实时效果反馈
1. 在Shiro中,anon
过滤器表示
A 无需认证即可访问
B 需要登录认证才能访问
C 需要登录认证或记住我认证才能访问
D 需要特定权限才能访问
2. 在Shiro中,authc
过滤器表示
A 无需认证即可访问
B 需要登录认证才能访问
C 需要登录认证或记住我认证才能访问
D 需要特定权限才能访问
答案
1=>A 2=>B