Shiro权限管理
一.权限管理的四张核心的表关系
用户表
用户-角色-关系表
角色表
角色-权限-关系表
权限表
角色-菜单-关系表
菜单表
二.权限的控件
粗粒度
配置文件配置
细粒度
通过注解实现
三.了解认证和授权的流程
前端发起登录请求---访问shiro的subject---subject.login(token)---SecurityManager安全管理器----自定义的realm----数据库
整合shiro与spring配置:
1. 导入pom坐标
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-all</artifactId>
<version>${shiro.version}</version>
</de pendency>
2. 配置web.xml
<filter>
<!-- 去spring配置文件中寻找同名bean -->
<filter-name>shiroFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>shiroFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
注意:该配置 配置 在struts2的过滤前面
3.配置applicationContext-shiro.xml
a.配置shiroFilter,用于配置粗粒度权限
<!--配置Shiro核心Filter -->
<bean id="shiroFilter"
class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
<!-- 安全管理器 -->
<property name="securityManager" ref="securityManager" />
<!-- 未认证,跳转到哪个页面 -->
<property name="loginUrl" value="/login.html" />
<!-- 认证后,没有权限跳转页面 -->
<property name="unauthorizedUrl" value="/unauthor.html" />
<!-- shiro URL控制过滤器规则 -->
<property name="filterChainDefinitions">
<value>
/login.html* = anon
/css/** = anon
/js/** = anon
/upload/** = anon
/images/** = anon
/user_login.action* = anon
/test_Author.action* = perms[user:author]
/test_has_role.action* = roles[user]
/** = authc
</value>
</property>
</bean>
anon 未认证可访问的资源
authc 认证后才可访问的资源
/* 和 /** 前者是 当前文件路径或文件夹中的所有请求
perms 权限列表
roles 角色列表
b. 配置 安全管理 器
<bean id="securityManager"
class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<property name="realm" ref="bosRealm" />
</bean>
c. 配置自定义的realm
@Service("RealmName")
@Override
//认证
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token);
4、生命周期(固定代码)
<bean id="lifecycleBeanPostProcessor"
class="org.apache.shiro.spring.LifecycleBeanPostProcessor"/>
四.如何测试?
在applicationContext-shiro.xml中,对shiroFilter进行配置
1. /**=authc 所有请求必须在登录成功之后才可以访问
2. 直接在浏览器中随便输入一个访问当前工程的URL,如果直接跳转到login.html,则表示Shiro的框架整合成功
Shiro权限管理
最新推荐文章于 2024-04-12 13:23:07 发布