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

Shiro Logo

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

Shiro结构图

讲原理当然离不开结构图,我们先来看一下Shiro的整体结构。

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的简单授权。如果大家有好的意见和建议请在评论区留言,谢谢大家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值