00:00
好,刚刚带着各位啊,咱们又实现了一下权限验证啊,角色验证和权限验证啊,咱们都带着各位去实现了一下相关功能啊,咱们也看到了相关的效果,但有一个事儿啊,咱们什么呢?但凡认证不通过的时候,他往往都是要什么呢?抛异常呢?啊,那这块呢?啊,首先第一个诶,随便把咱们异常抛到咱们前端页面的,哎,这个用户体验很差啊,对咱们的系统来说,哎,这个也不是太安全,那这块呢,还有没有更好的办法,其实啊,咱们验证不通过,给前端一个反馈就可以啊,来个提示啊,你没有权限或者你没有这个相关的角色啊,没办法访问相关的功能就可以啊,没有必要,哎,咱们把这个抛出的异常信息也返回到前端页面,说白了给咱们的什么的处理的特殊的异常,哎加一个什么呢,穿个马甲让什么呢?哎前端的用户看不到的,哎这块呢,哎怎么去做,很简单,咱们只需要什么呢,添加特殊。
01:00
异常处理就成啊,这块呢,哎,记住了,就是基于咱们SP框架啊这个哎,这个基于约定编程啊,实现的功能就是它,诶,Controller advice注解,再加上ex exception handle啊两个配合就可以实现特殊异常处理啊,不需要在咱们的程序中,哎,这个在咱们的哎这个controlrler中啊,在咱们的对应的业务代码当中啊,去做任何改变,只需要在之外添加这么一个什么呢?特殊异常处理的一个,诶对应的控制器的类就可以啊这块呢,直接去添加它就可以啊,咱们带着各位也去把这个特殊异常处理咱们给它添加上,那这块呢,诶在咱们的这个controlrler目录下去创建这么一个,诶权限的异常处理类啊,咱们去添加它就可以啊,非常之简单,咱们直接进到呃代码当中啊,找到咱们的对应目录controller下,我先把这个啊服务已经停了啊,那咱们在这个controller下,我创建一个新的类。就他啊,咱们的permissions啊,Exception啊,咱们对应的权限验证的异常处理类啊,在这个处理类咱们需要添加相关注解,刚刚在各位咱们也看过啊,是controller。
02:15
然后呢,在里面啊,咱们需要去什么呢?抓特殊的异常,首先抓完了异常呢,咱们反馈给前端啊,反馈给咱们的,哎,对应的前端页面那这块呢,呃,返回的结果一定是什么,是不是咱们的response body啊是一个字符串一个结果对吧?诶response body。这个必须要有,然后呢,还有就是非常关键的跟咱们的controller advice啊,这个配合使用的exception hander啊,咱们需要去什么来拿到这个控制器。Exception handle,咱们去抓相关异常啊,这块比如说啊,咱们什么的没有权限啊,你没有相关权限,咱们抓这个没有权限的异常就可以啊,这块指定一下咱们要抓的异常类是谁啊,这块也是该引包引下包看一下。
03:06
啊,这有时候这块呢,概这个咱们的idea提示就是这样,直接复制过来的话,哎,需要咱们给它删一个字母啊,咱们才能关联上,然后第二下,哎,咱们去抓一下这个议程类,然后咱们把这个方法也实现一下啊,哎很简单,咱们去抓一下特殊异常处理啊,咱们去什么抓一下特殊异常啊,起名就叫它吧啊,咱们去抓一下相关的异常。啊小写,哎,抓一下咱们的什么呢?没有权限的异常啊,咱们把这个异常抓到就是哎,Exception哎,把这个异常信息咱们可以输出一下,抓一下异常,然后之后呢,哎,咱们这块就别输出异常了,直接返回吧,哎但凡有相关的异常就是什么呢?没有权限无权限。哎,没有相应的权限啊,这是啊咱们的哎无权限的异常抓取,那还有什么呢?诶权限认证失败啊,认证失败也给我抓一下,就拿它改一下就成了,咱们只需要诶改一下我抓的异常就好啊,咱们换一个,也就是咱们的认证失败的异常,咱们去抓到它。
04:14
哎,就是咱们的authentication啊,咱们的authentication exception啊,去抓一下相关异常,同样也是啊,该引引一下包引一下包好抓相关的认证异常,那咱们把这块的名字方法名也改下啊,去抓相的异常,然后之后呢,诶这回就是什么呢?诶这个权限认证失败啊,这是指定下权限认证失败。好,咱们完成这个异常的抓取啊,这块呢,哎,咱们也可以去输出一下这些异常信息啊,当然都可以啊,这块呢,去抓箱的异常,但凡有异常咱们返回的就是相关的哎提示信息了,而不是什么呢,你这个原原封不动的把所有的异常信息返回给前前端啊这块呢,呃,相对而言用户体验更好,对于咱们系统来说也是,哎,就相对比较安全啊,咱们验证一下,好,再次启动,咱们换另外一个用户进行登录啊,这块之前咱们造的数据啊,各位再去看一眼,在咱们的用户信息表里,咱们去看一眼啊,打开表可以看到我除了张三还有跟李四啊,密码都是一样的啊,密文啊都是一模一样的,哎,这个我在用李四去登一下,然后呢,但是李四啊,这个idvr,咱们就看一下它所对应的角色啊,在这儿可以看到,哎,这个对应的这个相关的角色啊在这儿,哎,它只有什么呢?只有咱们第二个角色,而没有第一个in啊这块呢,哎,再去看一下咱们。
05:45
角色在这儿,哎角色跟这个权限的映射表,哎都是啊的mean才有权这个相应的权限,而咱们的什么呢?哎,这个另外一个角色就是他,哎咱们的用户管理员是没有的啊这是啊,咱们确认一下这个测试数据,那之后呢,启动服务咱们测试一把,这回咱们用李四登录一下,咱们测试下,诶看看有什么不一样,测试一把。
06:15
好,服务已经启动起来,咱们再去测试一下,还是登录login一下。好,登录这回我不用张三了,换李四,然后呢,咱们什么的密码还是Z3啊,密码是一样的,然后之后呢,点登录咱们可以看到,诶再去点什么呢?诶咱们的,哎,这个是诶权限验证啊,咱们去可以看一下,然后呢,直接点一下咱们的什么呢?哎,进行一个权限验证啊先看角色吧,角色验证咱们点一下,哎各位看到诶无权限啊,这个咱们验证啊是没有相关的这个呃权限的,你有角色,但是没有权限,然后再回来啊,咱们再去验证一下,权限验证啊权限验证别忘了咱们验证的是哎再到那个诶controller里去看一眼啊,咱们确认一把,呃进到咱们的controller可以看到,诶对应的什么呢?这个哎对应的角色啊的面你是没有的,所以在这块呢,咱们报什的没有相应的权限,然后暂后呢,诶咱们去验证一下这个什么呢?哎,这个user,哎,这个delete啊,这个相关的什么呢,这个权限有没有,咱们也去验证一下啊,直接点一下诶验证什么的诶。
07:23
这块诶还是没有权限,我看咱们啊这都是没有权限啊这块,哎这个都是走的咱们的,诶抓的啊咱们的什么呢?没有权限的这个异常啊,当然这块呢,咱们也可以去什么呢?哎,实现相关代码,他们随便写一个什么相关的权限,咱们也可以去验证,呃权限错误啊都是可以的啊带着各位咱们去实现了一下这个相关的验证情况啊,验证李四是否有项目权限,哎判断没有权限啊,这是啊,咱们对这个什么呢?呃,这个不同用户不同权限的一个验证,但是更好的方式是什么呢?哎,咱们说最好,哎这个虽然在后端接口啊,咱们都已经用什么呢,把权限控制住了,但有一个事儿最好什么是不是李四登进来,你就别看到这些你没有权限的东西吧。
08:09
啊,这块呢,这些方法你都没有权限啊,你都没办法操作,最好是让李四,诶别看到了,哎这块能不能实现,当然可以啊,咱们之后再去实现前端这块的,诶权限的控制。
我来说两句