跳到主要内容

08--基于内存模型实现授权

前言

在前面的几个章节中,一一哥 带大家学会了如何创建Spring Security项目,3种认证方式,以及在前后端分离时的安全处理方案。在之前的这几章节中,我们主要学习的还是关于 "认证" 的知识点,但是安全框架还有另一大核心功能,就是 "授权"

所以接下来请各位跟着 一一哥 来学习Spring Security的授权功能,只有 "认证" + "授权" 双剑合璧,才能真正发挥Spring Security的威力!

这时候小伙伴会问,"一一哥,那啥是授权啊?我连授权还不知道呢,更别说怎么实现授权了,呜呜......"!别急,接下来咱们先看看授权的概念!

一. 授权简介

1. 授权概念

所谓授权,比如说某个用户想要访问某个资源(接口、页面、功能等),我们应该先去检查该用户是否具备对应的权限,如果具备就允许访问,如果不具备,则不允许访问。也就是说,授权是用来判断控制用户是否就有相应权限的问题的!

在我们认证之后,才会考虑授权的问题,也就是你得先登录进来,然后才有资格判断你有没有权限。就好比你想做倭国的首相,拥有首相的权力,前提是你得先进入倭国成为倭国人,否则何谈权利的分配?所以授权的前提,是已经经过了认证,这个我们需要注意哦!

2. 授权粒度

在开始授权之前,我先给大家普及一下授权粒度的概念,所谓的"粒度",通俗的说就是指级别、程度、大小的意思,授权粒度就是对授权细分的级别、程度的意思。

在Spring Security中,授权粒度有如下几种:

> - 支持基于 URL 的请求授权 > - 基于方法访问的授权 > - 基于对象访问的授权

一共3种授权粒度,但是对于我们开发来说,常用的是基于URL和方法两种粒度进行授权。

3. 授权实现方式

那么我们在开发时,到底该怎么进行授权呢?如果我们想实现授权,可以采用如下方式:

> - 基于内存模型实现授权 > - 基于默认数据库模型实现授权 > - 基于自定义数据库模型实现授权

在本文中,一一哥 先带大家基于内存模型来实现授权,但是对于该实现方案,我们真正开发时几乎不用!有的小伙伴又急了,"开发时不用,你带我们学它干嘛啊"?别急!这种实现方案,虽然在实际生产环境中很少用,但是如果我们只是想学习如何实现授权,只是想搞个案例demo玩玩,这种授权方式是最简单的实现方案!而且也有助于我们理解基于数据库模型的授权实现方案。毕竟多学点没坏处,你就跟着我学呗。