之前制作网站的时候使用了Apache Shiro进行登录验证/权限认证,相比Spring Security,它更小巧,更容易上手,而且和Spring Boot的配合使用也完全不麻烦。
Shiro的四大功能
- Authentication:有时也简称为“登录”,这是一个证明用户是他们所说的他们是谁的行为。
- Authorization:访问控制的过程,也就是绝对“谁”去访问“什么”。
- Session Management:管理用户特定的会话,即使在非 Web 或 EJB 应用程序。
- Cryptography:通过使用加密算法保持数据安全同时易于使用。
Shiro的架构的3个主要的概念
Subject,SecurityManager 和 Realms
我对这些的理解比较通俗。
Subject就是对象,比如登录的用户。
Realms里面应该定义登录/权限的逻辑,因为框架并不知道你的逻辑是怎么样的,所以往往需要重写Realm方法。然后它负责对数据库的一些操作,可以看作DAO层。
而SecurityManager相当于管理Realms的容器,它负责管理Reamls,以及各种内部组件。(只是从这个方面看的话,感觉和分布式框架中的注册中心zookeeper/eureka的作用类似。当然此外这两者是完全不同的。)
ShiroConfiguration
因为我使用的是Spring boot,所以相比Spring配置更为简便。而需要集成Shiro的话,需要单独配置ShiroConfiguration。
步骤也很简单,只有三步