Shiro的架构
从外部看Shiro的架构
解释:
-
Subject:
主体,代表了当前的”用户”,这个用户不一定是一个具体的人,与当前应用程序交互的任何东西都是Subject,如网络爬虫、机器人等;即一个抽象的概念;所有的Subject都绑定到SecurityManager,与Subject的所有交互都会委托给SecurityManager;可以吧Subject认为是一个门面;SubjectManager才是实际的执行者。 -
SecurityManager:
安全管理器;即所有与安全有关的操作都会与SecurityManager进行交互,且它管理者所有的Subject;它是Shiro的核心,类似于SpringMVC中的DispatcherServlet. -
Realm:
域,Shiro中Realm获取安全数据(用户、角色、权限),就是说SecurityManager要验证用户身份,那么他需要从Realm获取相应的用户进行比较以确定用户身份是否合法;也需要从Realm中得到用户相应的角色、权限进行验证用户是否能进行操作;可以吧Realm看做DataSource,即安全数据源。
也就是说,一个简单的Shiro应用:
应用代码通过Subject来进行认证和授权,而Subject又委托给SecurityManager;
我们需要给Shiro的SecurityManager注入Realm,从而让SecurityManager能得到合法的用户和权限进行判断。