00:00
好,下边咱们再设设置一个要求哈,呃,我们刚才用的都是角色,然后呢,咱们看看咱们用一下这个权限。比如说呀。咱们去用户保存,这说他要求他具备一个user这个权限。用权限来进行控制啊要求。呃,访问。嗯,In保存功能时,呃,具备。这个user save这个权限。哎,咱们试试啊。这个去去找到我们的这个叫。Handler里边的admi handler ctrl o。嗯。这就是一样的哈,来一个pre authority。
01:00
Pre authority。老记错。这个时候呢,给他来一个has authority。当然说这个我们说这个这个这这里边儿写的哈,这当然这也是表达式,这东西也不是说我们自己能随便写的啊,这东西这个有什么依据吗?或者有没有什么参考的。大家去看我们这里边哈,我们这个里边不是设置过这个类似has Rose什么的哈,这个这个源码我们点进去哈。呃,在这你看这个expression URL authorization config,哎,这个其实expression就是表达式的意思。Has肉呢,这边你再点进去,这不就是它就是在拼这个表达式。哎,Has city这就在拼表达式,拼好了以后呢,它返回的都是字符串形式的表达式,然后呢,它要发送给这个access。这个access呢,其实这里边儿就是执行各种表达式,所以这个access呀,我们在这儿呢,你要是不写这些哈,就是说我们。
02:07
A。嗯,比如说呢,在这儿是这个,比如说aunt MAS啊。这写access,你在这儿呢?去写这个复杂的表达式都是可以的,还肉。哎,然后呢,And has authority等等哈。啊,然后呢,你要是或者说还可以再把这个括起来。嗯。哎,这边来个or这边再来一个什么什么啊,这个可以整的很复杂啊,就是这个是access啊,所以在这儿的话我们说。呃,这个参考啊,就是我们可以参考它的,呃,源码里边啊,它这里边儿,其实最后呢,它就是也都是拼成表达式,最后解析这个表达式去运行。
03:06
嗯。比如说我们这儿,咱们现在就has authority啊,CTRLC这源码里边这个东西CTRC咱们复制过来,咱就很放心了啊,这个咱们就不用担心自己敲敲错了。啊,大家如果互相之间交流交流的话啊,你会发现很多时候你自己回去哈,这个卡住你。呃,20个小时的一个bug,最后是你有一个地方打字打错了。多么痛的领悟,是吧?啊。就是我为什么就是说我我我这样的我都对吧,就是说我跟你们比吧,就是说这个,呃,并不是说脑子能有多聪明哈,就是我教的比你们时间长了,但即便这样的话,你看我也有过这种打字打错了,就是去去去出错的。
04:03
啊是说说我是因为这个在这个问题上被虐的太多了,我就比较注意。啊说你们这边你们也是经过这个反复的锤炼以后,你们以后注意的话,以后就好了。哎,这个save呢,我们给它设置一个user save这个哎,要这样一个权限。看到这个哈,你看就是我们当初跟大家说的这个东西。冒号本身没有任何特殊的含义。它就是表示user下边save这个操作,哎,说这个呃,Security它不会来解析这里边的这个冒号,所以说呢,如果我们统一的你要都是横线。都是斜杠,都是圈A,都是百分号,都是这个雨。都是这个星是没问题的,你这符号用啥都行啊,这个符号只是为了给我们看,不是给给不是给spring security来用的啊。哎。嗯,所以说我们设置这个呢。
05:02
设置上这个哈,呃,那么。就应该是这个,谁能访问哈,Admi operator能访问,肉operator不能访问。哎,跑起来试一下啊。嗯,这是我们去设置这个,Sorry,呃,用的是这个权限的方式去控制。啊,这里边儿哈。呃,表达式的写法不一样了。In to login。嗯,他应该是这个应该能访问。嗯,这个得点过来。
06:01
过来呢,咱们比如说呢,这边的一个。随便来一个啊。哎,他能做这个保存,然后呢,换一个换成这个肉operator。啊。啊,他这儿都过不来哈,对,他这儿都过不来哈。那得给他暂时呢,得把这个给他放开。嗯。我们考看一下啊,Get配。哦,这个东西是我们在这儿设置的啊,那就暂时。呃。其实我们可以给大家看一下啊,这个如果我们这儿用这个access的话。咱们可以给他说这个害肉。或者是his authority。
07:01
说这个是是啥呢,就是说我们这个看肉operator呀,它有些什么哈,他有部长这个角色。它有一个肉delete这么一个呃权限。那再给他一个选项吧,再给他一个user的。嗯,Query的一个权限,看看有没有这么个权限。嗯,再来一个user query的权限。有点有盖的哈。You get。那就再给他一个user get的权限。那么我们这儿呢,就是说他有一个,呃,要不呢,你就是有一个经理的角色,要不呢,你有一个user get的一个权限,哎,那么这时候其实呃,The main operator有这个角色可以访问。然后呢,这个肉operator呢,有这个权限可以防的,现在这样的话,这么设置的它就都可以防的了。
08:07
我如果把这or改成and会怎么样?哎,他俩就谁都不行了啊,他有这角色没有这权限,他有这权限呢,他没有这角色。啊,就这两个,他俩就谁都不能够去做这个了啊。嗯,所以我们这儿给它改成这个二哈。然后我们得真的得给它加上哈,User get是三。我们这个角色呢。部长这个角色是238。哎。240呃。啊部长操作者对240240去带上一个。呃,多少来着。240带上这个。
09:04
哎,好嘞,这个,然后我们这样设置上以后啊,就他就也就能够去访问那个什么了。嗯,这个吧,就相当于可以作为我们,呃,在下边儿这个第四个测试。诶,这个要求呢。哎,就是访问。嗯,阿密。分页功能。嗯,是。具备。这个叫什么经理?角色或user get。权限。嗯,二者之一。哎,这两个里边有一个就行啊。嗯,好嘞,这边跑起来的话,咱们登录一下哈。咱们得拿这个先拿。
10:00
呃。对,咱们现在是要拿这个肉operator登录一下啊。之前他是不能访问用户维护的,要划过去。嗯,他说不能解析这个表达式。哪儿写错了?少写一个I是吧。啊,你看这打脸了是吧。这刚说这个不要打错了是吧。我这还那就是不小心删掉了,我刚才这不复制过来的是吧。这事不小心删掉了。有进了,友谊的小船翻了。以后,以后你们就不是最优秀的班了。
11:01
其实也好啊,就是我们看到这个地方表达式写错的话,它会抛这样的异常。哎,这回过来了啊,就这回你看他因为这个这个用户呢,是因为有权限过来的,他虽然没有对应的角色,但是他有这个权权限。然后过来点这个新增,然后过来呢,随便瞎填一个啊。诶对了,他现在现在这个用户保存这个事儿,他应该干不了哈,对咱们回到咱们代码里边看一下啊。Control o哈,这个save这哈,他没有user save这个权限啊,他保存这个事儿他应该干不了。哎,对吧,不允许访问啊,这就是我们这个效果哈,咱们把这个代码补充完整,这个要求有这个权限,但是他没有啊,所以这个效果。效果是我们admin。Operator。
12:01
嗯。Admin operator能够访问肉operator不能访问。这个指的是这个保存的操作,然后下边这个呢。呃,分页这个二者之一,哎,这个加锁的这个代码。这个其实是在我们第一个这个基础上。我们改成这个access了。嗯,把这个啊。这我们注释一下啊。要求具备。经理角色。和这个user get。这个权限二者之一。
13:08
哎,这两个里边这个有一个就行啊,哎,然后这个效果。哎,他俩都能访问。好嘞。
我来说两句