shior时Apache旗下的一个开源安全框架,他将软件系统的安全认证相关的功能抽取相出来,实现用户身份认证、权限授权、加密、会话管理等功能,组成了一个通用的安全框架
在概念层,shiro架构包含三个主要理念:subject、securitymanager、realm Subject:即当前用户,在权限管理的应用程序里往往需要知道谁能够操作什么,谁拥有操作该程序的权利,shiro中则需要通过Subject来提供基础的当前用户信息,Subject 不仅仅代表某个用户,与当前应用交互的任何东西都是Subject,如网络爬虫等。所有的Subject都要绑定到SecurityManager上,与Subject的交互实际上是被转换为与SecurityManager的交互。
SecurityManager:即所有Subject的管理者,这是Shiro框架的核心组件,可以把他看做是一个Shiro框架的全局管理组件,用于调度各种Shiro框架的服务。作用类似于SpringMVC中的DispatcherServlet,用于拦截所有请求并进行处理。
Realm:Realm是用户的信息认证器和用户的权限人证器,我们需要自己来实现Realm来自定义的管理我们自己系统内部的权限规则。SecurityManager要验证用户,需要从Realm中获取用户。可以把Realm看做是数据源。
1.系统调用subject的login方法将用户信息提交给securitymanager 2.securitymanager将认证操作委托给认证器对象authenticator 3.authenticator将身份信息传递给realm 4.realm访问数据库获取用户信息然后对用户信息进行封装并返回 5.authenticator对realm返回的信息进行身份认
1.系统调用subject的相关方法将用户信息递交给securitymanager。 2.securitymanager将授权检测操作委托给authorizer对象。 3.authorizer将用户信息委托给realm。 4.realm访问数据库获取用户权限信息并封装返回。 5.authorizer对用户授权信息进行判定。