Shiro权限管理(二)——认证

Shiro Logo

时隔这么久终于有时间更新了,今天和你们分享一下Shiro的原理。我认为不管是Shiro也好,仍是其余安全框架也好,其功能主要就分为三部分:认证、受权、加密。下面咱们来详细说明Shiro具体是如何实现的。

Shiro结构图

讲原理固然离不开结构图,咱们先来看一下Shiro的总体结构。java

Shiro Theory

由Shiro的结构图咱们能够看出Shiro的核心就是Security Manager。Shiro的认证、受权、Session管理,都须要由Security Manager负责。安全

Shiro认证

下面咱们用一个小例子来了解一下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());

    }
}
  1. 建立securityManager环境,咱们这里使用的是DefaultSecurityManager。
  2. 设置Realm,Realm主要主要负责Subject的认证和受权。其中最重要的两个方法是doGetAuthenticationInfodoGetAuthorizationInfo,这也是咱们整个权限管理的最重要的一部分,因为这里咱们只是一个入门程序,咱们就使用Shiro定义好的SimpleAccountRealm做为演示,后面咱们还会说到JdbcRealm和自定义Realm。
  3. 经过SecurityUtils设置securityManager和获取subject;
  4. 建立须要认证的token信息,这是咱们本身建立一个UsernamePasswordToken来模拟获取用户从前台登录的帐号密码。
  5. 最后咱们使用subject.login(token);进行认证。若tonken中的帐号密码和咱们addUser()添加的相同则测试经过,不然则会抛出异常。

Shiro认证咱们先说这么多,下节咱们来讲说Shiro的简单受权。若是你们有好的意见和建议请在评论区留言,谢谢你们。测试

相关文章
相关标签/搜索