时隔这么久终于有时间更新了,今天和你们分享一下Shiro的原理。我认为不管是Shiro也好,仍是其余安全框架也好,其功能主要就分为三部分:认证、受权、加密。下面咱们来详细说明Shiro具体是如何实现的。
讲原理固然离不开结构图,咱们先来看一下Shiro的总体结构。java
由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的简单受权。若是你们有好的意见和建议请在评论区留言,谢谢你们。测试