参考:https://blog.csdn.net/qq_39874546/article/details/79081950
https://www.cnblogs.com/moonlightL/p/8126910.html
1. Shiro入门
ApacheShiro是一个功能强大且易于使用的Java安全框架,提供了认证,授权,加密,和会话管理。
Shiro有三大核心组件:
Subject:即当前用户,在权限管理的应用程序里往往需要知道谁能够操作什么,谁拥有操作该程序的权利,shiro中则需要通过Subject来提供基础的当前用户信息,Subject 不仅仅代表某个用户,与当前应用交互的任何东西都是Subject,如网络爬虫等。所有的Subject都要绑定到SecurityManager上,与Subject的交互实际上是被转换为与SecurityManager的交互。
SecurityManager:即所有Subject的管理者,这是Shiro框架的核心组件,可以把他看做是一个Shiro框架的全局管理组件,用于调度各种Shiro框架的服务。作用类似于SpringMVC中的DispatcherServlet,用于拦截所有请求并进行处理。
Realm:Realm是用户的信息认证器和用户的权限人证器,我们需要自己来实现Realm来自定义的管理我们自己系统内部的权限规则。SecurityManager要验证用户,需要从Realm中获取用户。可以把Realm看做是数据源。
2. 依赖
<!--shiro核心类库--> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>1.2.3</version> </dependency>
3.过滤器解释
1 /admins/**=anon # 表示该 uri 可以匿名访问 2 /admins/**=auth # 表示该 uri 需要认证才能访问 3 /admins/**=authcBasic # 表示该 uri 需要 httpBasic 认证 4 /admins/**=perms[user:add:*] # 表示该 uri 需要认证用户拥有 user:add:* 权限才能访问 5 /admins/**=port[8081] # 表示该 uri 需要使用 8081 端口 6 /admins/**=rest[user] # 相当于 /admins/**=perms[user:method],其中,method 表示 get、post、delete 等 7 /admins/**=roles[admin] # 表示该 uri 需要认证用户拥有 admin 角色才能访问 8 /admins/**=ssl # 表示该 uri 需要使用 https 协议 9 /admins/**=user # 表示该 uri 需要认证或通过记住我认证才能访问 10 /logout=logout # 表示注销,可以当作固定配置
注意:
anon,authcBasic,auchc,user 是认证过滤器。
perms,roles,ssl,rest,port 是授权过滤器。