GDreams0 2019-06-27
时隔这么久终于有时间更新了,今天和大家分享一下Shiro的原理。我认为无论是Shiro也好,还是其他安全框架也好,其功能主要就分为三部分:认证、授权、加密。下面我们来详细说明Shiro具体是如何实现的。
讲原理当然离不开结构图,我们先来看一下Shiro的整体结构。
由Shiro的结构图我们可以看出Shiro的核心就是Security Manager。Shiro的认证、授权、Session管理,都需要由Security Manager负责。
下面我们用一个小例子来了解一下Shiro 的简单用法。
public class HelloShiro { SimpleAccountRealm realm = new SimpleAccountRealm(); @Before public void addUser() { realm.addAccount("Mark", "123456"); } @Test public void testSimlpeRealm() { // 1.构建securityManager环境 DefaultSecurityManager securityManager = new DefaultSecurityManager(); securityManager.setRealm(realm); // 2.主体提交认证请求 SecurityUtils.setSecurityManager(securityManager); Subject subject = SecurityUtils.getSubject(); AuthenticationToken token = new UsernamePasswordToken("Mark", "123456"); // 3. 认证 subject.login(token); System.out.println(subject.isAuthenticated()); } }
doGetAuthenticationInfo
和doGetAuthorizationInfo
,这也是我们整个权限管理的最重要的一部分,由于这里我们只是一个入门程序,我们就使用Shiro定义好的SimpleAccountRealm
作为演示,后面我们还会说到JdbcRealm和自定义Realm。SecurityUtils
设置securityManager和获取subject;UsernamePasswordToken
来模拟获取用户从前台登陆的账号密码。subject.login(token);
进行认证。若tonken中的账号密码和我们addUser()
添加的相同则测试通过,否则则会抛出异常。Shiro认证我们先说这么多,下节我们来说说Shiro的简单授权。如果大家有好的意见和建议请在评论区留言,谢谢大家。