springboot系列(二):Apache Shiro安全框架的简单使用

上一篇文章中实践了原始方式实现的登录验证的过程,了解了关于登录验证的一些简单原理。然而在实际项目的开发中,这种方式并不能满足实际安全的需求,而是借助一些框架来实现。目前,Apache Shiro和spring Security是两大最为流行的安全验证框架,相比于Spring Security的功能强大但使用复杂,Apache Shiro更为简单易用,也渐渐更多人使用。

下面会用从如何入手使用一个框架来说Apache Shiro的简单使用。一般,接触一个框架,可以从以下几个方面说起:基本功能、基本原理、基本使用配置、功能使用扩展。

首先来看基本功能,Shiro最基本的功能有以下四个:

认证Authentication : 身份认证/登录,即验证用户是否拥有相应的身份。

授权Authorization : 某个通过认证的用户是否拥有某个权限。

会话管理Session Manager:一次登录就是一次会话,没有退出之前,所有信息都在会话中。

cryptography加密 : 如密码加密存储到数据库中。

Shiro实现安全验证的基本原理:

Subject:主体,可以使与当前用户交互的的任务东西

SecurityManager:Shiro的核心,所有与安全有关的操作都会与SecurityManager交互,相当于SpringMVC的DispatcherServlet前端控制器

Realm: 域,Shiro从Realm获取安全数据(用户/密码、角色、权限),相当于用于验证的数据源。

根据上图,应用实现安全认证的流程为:

1、应用代码通过Subject来进行认证和授权,而Subject又委托给SecurityManager;

2、我们需要给Shiro的SecurityManager注入Realm,从而让SecurityManager能得到合法的用户及权限来进行判断;

在springboot 中使用Shiro的基本过程如下:

1、添加依赖:

2、配置,这里的java配置相当于spring MVC中的xml配置


}

3、Shiro不会去维护用户、维护权限;这些需要我们自己去设计提供;然后通过相应的接口注入Shiro即可,我们可以自定义一个Realm类,继承AuthorizingRealm抽象类,重载doGetAuthenticationInfo(),重写获取用户信息的方法即可,下面让我们来看具体的代码实现:


4、好了,上面基本上就是完成了Shiro的基本配置过程,下面是测试的业务代码

页面html:

springboot登录


Controller


小结:

可以发现Apache Shiro 核心是通过 Filter 来实现的,需要通过URL规则来进行过滤和权限校验,所以我们在上面需要定义一系列关于URL的规则和访问权限。另外,Shiro采用的是RBAC策略, 即是基于角色的访问控制(Role-Based Access Control ),即是权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。由于上面没有实现权限的控制,所以这里没有体现,还有会话管理、加密等功能会在后面实践,敬请期待...

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.简介 Apache Shiro是Java的一个安全框架。功能强大,使用简单的Java安全框架,它为开发人员提供...
    H_Man阅读 3,201评论 4 47
  • 构建一个互联网应用,权限校验管理是很重要的安全措施,这其中主要包含: 认证 - 用户身份识别,即登录 授权 - 访...
    zhuke阅读 3,578评论 0 30
  • 前言 Spring boot 是什么,网上的很多介绍,这里博客就不多介绍了。如果不明白Spring boot是什么...
    xuezhijian阅读 17,954评论 13 39
  • Apache Shiro Apache Shiro 是一个强大而灵活的开源安全框架,它干净利落地处理身份认证,授权...
    罗志贇阅读 3,280评论 1 49
  • 失去了的并不可怕 可怕的是放不下 放不下——那份牵挂 树木牵扯着枝条 鲜花恋着盛夏 不是每个故事 都能编辑入画 人...
    琢玉书生阅读 332评论 2 15