资讯专栏INFORMATION COLUMN

Shiro实战(一) Shiro核心概念

mdluo / 1598人阅读

摘要:是什么是功能强大简单易用的安全框架,核心功能包括认证授权加密以及管理。的主要作用就是用来执行认证和授权的逻辑,它其实就相当于与安全数据用户账号密码角色权限之间进行交互的桥梁。至此,的三个核心概念已经介绍完毕。

1、Shiro是什么

Shiro是功能强大、简单易用的Java安全框架,核心功能包括:认证、授权、加密以及Session管理。Shiro的应用范围很广泛,小型移动端应用、大型Web应用以及企业级应用都能够胜任。

2、Shiro的核心概念

Subject 主题

刚开始看到这个词时确实有点摸不着头脑,但是我们可以将其简单理解为‘the current user",当前正在执行操作的用户,这样就好理解多啦!   
那怎么样才能获取Subject呢?这个Subject又能够做什么呢?下面我们通过一段代码来了解下

// 获取Subject
Subject currentUser = SecurityUtils.getSubject();

SecurityManager

SecurityManager是Shiro架构的核心,也是前面我们介绍的Subject的幕后英雄,通过对象的名称我们也能大体猜到SecurtiyManager的作用,那就是管理应用中的所有用户的安全操作。 

一般来说,一个应用只会存在一个SecurityManager实例,也就是属于应用层面的Sigleton。那么我们如何获取到SecurityManager对象呢?下面通过简单的Java应用来介绍如何获取SecurityManager

首先,我们创建一个maven项目quick-start,在resources目录下新建一个INI配置文件(为什么是INI配置文件,不是XML或者properties文件呢?Shiro默认是基于INI配置文件的,而且Shiro团队认为INI配置文件相比较XML更宜读,使用起来更简单,需要的依赖也更少),然后创建一个QuickStart.java
INI配置文件内容如下:

#用户名以及该用户对应的密码以及角色
#username = password, role1, role2..., roleN
[users]
rivers = secret, admin
calabash = warrior, guest
#角色以及该角色可以拥有的权限
#rolename = permission1, permission2..., permissionN
[roles]
admin = UserManagerment:*
guest = UserManagerment:getUserInfo

QuickStart部分代码如下:

Factory factory = new IniSecurityManagerFactory("classpath:shiro.ini");
SecurityManager manager = factory.getInstance();
SecurityUtils.setSecurityManager(manager);

通过上面代码我们看到,首先加载INI配置文件,然后利用工厂模式得到SecurityManager对象。

Realms
Realm的主要作用就是用来执行认证和授权的逻辑,它其实就相当于Shiro与安全数据(用户账号密码角色权限)之间进行交互的桥梁。当配置Shiro时,我们必须配置至少一个Realm来进行认证和授权,当然你也可以配置多个,这也就是为什么我们这个小节的标题是Realms,而不是Realm的原因。

但是在上面的示例代码中,我们并没有配置Realm呀!只是在INI配置文件中,配置了部分用户以及该用户对应的角色和权限信息,那应用岂不是会存在问题?Debug发现,我们上面代码拿到的SecurityManager对象其实已经存在Realm对象,内容正好是我们INI配置文件中的内容。

通过上面的图片我们可以看到,Shiro默认给我们的SecurityManager其实是DefaultSecurityManager,由于我们在INI配置文件中配置了[users]与[roles],Shiro在初始化SecurityManager时自动初始IniRealm对象,并将配置中的[users]与[roles]的值加载进IniRealm对象中。

至此,Shiro的三个核心概念已经介绍完毕。代码示例下载地址shiro-study

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/67447.html

相关文章

  • Shiro实战(二)Shiro认证原理

    摘要:认证原理与认证就是进行身份确认的过程,也就是用户对应中的需要提供证明来证实自己的身份。是的顶级抽象实现类,主要用于处理认证操作,至于授权等操作则交由该类的子类去处理。至此,认证的整体过程与底层逻辑已经全部介绍完毕。 在上篇Shiro核心概念中,我们介绍了Shiro的三大核心概念:Subject、SecurityManager、Realms,并通过示例代码QuickStart展示常用的认...

    Channe 评论0 收藏0
  • Shiro实战(三)Shiro授权(上)

    摘要:授权三大要素是安全框架中最原子性的元素,它用来描述能够做什么或者说能够执行什么样的操作,比如删除用户查看用户详情查看商品详情等。用户就是我们之前提到的三大核心概念之一的。 在上篇Shiro认证原理的最后,我们介绍了IniRealm是如何进行认证,本篇我们将介绍Shiro授权过程中的几个概念以及Shiro编程式的授权操作,并通过常用的用户、角色、权限授权模式来加深理解授权的过程。 1 授...

    sushi 评论0 收藏0
  • Apache Shiro 简介

    摘要:的很容易反映出常见的工作流程。权限检查是执行授权的另一种方式。在安全框架领域提供了一些独特的东西一致的会话,可用于任何应用程序和任何架构层。 Apache Shiro™是一个功能强大且易于使用的Java安全框架,可执行身份验证,授权,加密和会话管理。借助Shiro易于理解的API,可以快速轻松地保护任何应用程序 - 从最小的移动应用程序到最大的Web和企业应用程序。 1. Apache S...

    econi 评论0 收藏0
  • 不用 Spring Security 可否?试试这个小而美的安全框架

    摘要:写在前面在一款应用的整个生命周期,我们都会谈及该应用的数据安全问题。用户的合法性与数据的可见性是数据安全中非常重要的一部分。 写在前面 在一款应用的整个生命周期,我们都会谈及该应用的数据安全问题。用户的合法性与数据的可见性是数据安全中非常重要的一部分。但是,一方面,不同的应用对于数据的合法性和可见性要求的维度与粒度都有所区别;另一方面,以当前微服务、多服务的架构方式,如何共享Sessi...

    toddmark 评论0 收藏0

发表评论

0条评论

mdluo

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<