Apache Shiro 的三大核心组件:
-
1、Subject :当前用户的操作
-
2、SecurityManager:用于管理所有的Subject
-
3、Realms:用于进行权限信息的验证
Authentication 和 Authorization
在shiro的用户权限认证过程中其通过两个方法来实现:
1、Authentication:是验证用户身份的过程。说白了就是获取验证用户
2、Authorization:是授权访问控制,用于对用户进行的操作进行认证授权,证明该用户是否允许进行当前操作,如访问某个链接,某个资源文件等。说白了就是用户验证用户权限
其他组件:
除了以上几个组件外,Shiro还有几个其他组件:
-
1、SessionManager :Shiro为任何应用提供了一个会话编程范式。
-
2、CacheManager :对Shiro的其他组件提供缓存支持。
基础例子
-
编写操作用户业务的Service:
通过用户名查询用户信息
通过用户名查询用户权限字符串 -
编写shiro组件自定义Realm:
实现获取AuthorizationInfo,权限字符串的方法
实现获取AuthenticationInfo,认证信息的方法 -
编写登录功能
SecurityUtils.getSecurityManager().logout(SecurityUtils.getSubject());
// 登录后存放进shiro token
UsernamePasswordToken token = new UsernamePasswordToken(user.getUsername(), user.getPassword());
Subject subject = SecurityUtils.getSubject();
subject.login(token);
- 定义shiro的filter
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
<property name="securityManager" ref="securityManager" />
<property name="loginUrl" value="/toLogin" />
<property name="successUrl" value="/home" />
<property name="unauthorizedUrl" value="/403" />
<property name="filterChainDefinitions">
<value>
/toLogin = authc <!-- authc 表示需要认证才能访问的页面 -->
/home = authc, perms[/home] <!-- perms 表示需要该权限才能访问的页面 -->
</value>
</property>
</bean>
网友评论