vlambda博客
学习文章列表

一颗赛艇——Apache Shiro框架简单总结

由于项目需要,所以就去看了下shiro框架,第一次上手还是不太简,废话不多说,开始。


先看下官网(http://shiro.apache.org/)介绍:

Apache Shiro™是一个功能强大且易于使用的Java安全框架,可执行身份验证、授权、加密和会话管理。通过Shiro易于理解的API,您可以快速、轻松地保护任何应用程序——从最小的移动应用程序到最大的web和企业应用程序。

简单的来说Shiro 就是用来解决安全管理的系统化框架。它不依赖任何容器,可以运行在 Java SE 和 Java EE 项目中。


整合shiro

所以用的时候还是要先整合到sprint-boot框架内,需要先导入shiro依赖到pom.xml中。

<dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>1.5.3</version> </dependency>

这样shiro就算是整合进了spring-boot中了,可以用shrio中的相关组件。


shiro核心组件

因为shiro适用于安全管理的框架,所以它必然会涉及用户、角色、权限这三个字眼。这三个词语之间的关系是:角色赋予给用户,权限赋予给角色。角色是用户获取权限的中间桥梁。这样用户需要访问需要不同权限的页面时候,直接赋予给用户不同角色即可。只需要在数据库中创建user、mamage、perms三张表,彼此进行主键关联,这样修改权限的时候也很方便。这是使用的初始逻辑。

几个核心组件:

  1. UsernamePasswordToken:  shiro用来封装用户的登录信息,通过使用用户的登录信息来创建令牌token(可以理解为入场证)。

  2. SecurityManager: shiro核心组件,通过名字就知道,这是进行安全管理的组件,负责用户的安全认证和授权。

  3. Subject:  它包含了用户的信息。

  4. Realm: 这是我们自己定义的模块,主要写自己创建的验证和授权的逻辑。

  5. AuthenticationInfo:用户的角色信息集合,一般用于用户登录认证。

  6. AuthorizationInfo:和上面容易混。是角色的权限集合。用于登陆后授权。上述两个info是重写在realm里的。

  7. DefaultWebSecurityManager: 如名字所示,默认安全web管理器,我们自己所写的验证和授权逻辑的realm需要注入到这个管理器中,验证和授权逻辑才能生效。

  8. ShiroFactoryBean: 如名字所示,shiro过滤器工厂,shiro是我们去制定过滤规则,然后将写好的规则放进shiro中去执行。那么具体的执行操作就需要ShiroFactoryBean创建Filter过滤器对象来完成。


过了就是涉及具体代码方面的业务逻辑和代码细节。还挺多,等理顺了再说。