天天看点

shiro(四)大结局总结以及按钮级别权限控制

shiro

shiro是apache旗下的权限控制框架,shiro有四大核心

认证器(authenticator)、授权器(Authorizer)、会话管理器(sessionManager)、

密码管理器(Cryptography)

我们在项目当中使用shiro的时候,需要配置shiroFilter、指定securityManager、

登录url、非法访问的url、权限过滤规则等等,认证和授权通过自定义Realm

重写dogetAuthentication 登录认证方法以及dogetAuthorization方法 授权方法

shiro不仅仅提供url级别的权限控制,我们还通过shiro标签 hasrole、haspermisstion

实现按钮级别的权限管理.

session管理这一块,我们使用spring-session实现了分布式环境下的

session分离,手动开发sessionDao,重写session的增删改查方法

第一步引入标签库

只有admin角色才能访问

<shiro:hasRole name="admin">
<button>添加员工</button>
</shiro:hasRole>
           

所有人都可以访问

<shiro:hasAnyRoles name="admin,staff">
<button>查询员工</button>
</shiro:hasAnyRoles>
           

当然这里的配置要和过滤器对应

<!-- 过滤器链定义   shirofilter可以拦截静态子资源的,所以静态资源一定得在这里配置 -->
		<property name="filterChainDefinitions">
			<value>
				/login/**= anon
				/css/**=anon
				/html/**=anon
				/images/**=anon
				/js/**=anon
				/staff/**=roles[admin,staff]
				/company/**=roles[admin]
				/logout = logout
				<!-- user表示身份认证通过或通过记住我认证通过的可以访问 -->
				/** = user
				<!-- /**放在最下边,如果一个url有多个过虑器则多个过虑器中间用逗号分隔,如:/** = user,roles[admin] -->
			</value>
		</property>

           

继续阅读