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的增删改查方法
第一步引入标签库
<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>
只有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>