Java安全(权限)框架 - Shiro 功能讲解 架构分析

Java安全(权限)框架 - Shiro 功能讲解 架构分析

作者 : Stanley 罗昊

转载请注明出处和署名,谢谢!

简述Shiro

Shiro出自公司Apache(阿帕奇),是java的一个安全和权限框架

在这之前,我想各位应该也学过 SpringMvc、struts2。他们都是web的mvc框架,紧接着一些ORM框架,比如Mybatis 、Hibernate,而这个Shiro更加主流、也更加简单易用,它不但是适用于javaSE环境,也适用于javaEE环境;

Shiro可以完成如:认证、授权、加密、会话管理、与web集成、缓存等;

Shiro功能简介

Authentication

认证,说白了就是登陆,我们可以利用Shiro完成登陆,登录时的密码匹配,就是Shiro帮我们完成的

Authorization

授权,当我们点一个连接或一个按钮的时候,Shiro会帮我们判断你有没有这个权限;

SessionManagement

Shiro向我们提供的Session;

我们在web环境下可以使用SesCryptsion,当然,这个是httpSession,如果使用Shiro的话,即便你身处非web环境下,我们也可以使用Session,那个Session,就是Shiro给我们提供的;

Cryptography

加密,到后面会有具体详解;

Web Support

可以很容易的跟,JavaEE应用进行集成;

Caching

可以在多线程的情况下进行授权,认证;

Tssting

测试

Caching

Shiro提供了缓存模块,让我们的运行速度更快;

Run As

让,已经登录的用户,以另外一个用户的身份,来操作当前的系统;

RememberMe

记住我

Shiro架构

从外部看,最主要的组件有两个:

SecunityManager 、 Realm

架构图讲解:

Application Code,当应用程序去访问Shiro的时候,那么就一定会是Subject(这个就表示当前用户),比如你等没登录、如何登陆、你是不是可以访问某一个权限、都是要去搞这个Subject,它是一个门面;

而,后面的核心是SecurityManager,它就像一个大管家一样,它管理者Shiro的各个组件;

当我们需要访问一些安全数据的时候,比如:获取用户信息,获取权限信息,我们就需要用到这个Reaim,它相当于是一个SecrityDAO

Shiro架构详细分析

subject应用代码直接交互点对象是Subject,也就是说Shiro的对外API核心就是Subject。Subject代表了当前“用户”,这个用户不一定是一个具体的人,与当前应用交互的任何东西都是Subject,如网络爬虫、机器人等;

与Subject的交互都会委托给SecurityManager才是实际的执行者

SecurityManager:安全管理器;即所有与安全有关的操作都会与SecurityManager交互;且其管理所有Subject;可以看出他是Shiro的核心,它负责与Shiro的其他组装件进行交互,它相当于SpringMVC中的DispatcherServlet

Realm:Shiro从Realm获取安全数据(如用户、角色、权限),就是说SecurityManager需要验证用户身份,那么它需要从Realm得到用户相应的角色/权限进行验证用户是否能进行操作;可以把Realm看成DataSource

posted @ 2019-04-18 20:53  StanleyBlogs  阅读(2288)  评论(1编辑  收藏  举报