00:01
各位大家好,欢迎继续收看上硅谷视频课程。在刚才内容中呢,我们讲到了spring security的基本原理就是一个过滤系列,然后它的过滤器是如何进行加载的,咱通过查看源码看一下它里面的过程,那咱们下面继续来往下学取,下面给大家说什么呢?我来强调一下,下面呢给各位就来介绍在我们开发spring security过程中有两个重要的接口。那两届考师做什么呢?给各位来说一下,大家注意啊,我们在写这个入门案例的时候,咱用的是不是它默认的用户名,和每次咱们启动项目在里边是不是会有一个密码,是不是这个密码用它是不是做登录,默认用户名是user密码,就是每次这个密码,但是你注意在实际的项目开发中,咱是不是肯定不这么做呀,而咱用的密码是不是都需要查数据库,包括咱们存的密码,你注意啊,就是这个密码是做了一些加密,咱密码肯定要做一些加密的处理,所以咱们下面就说一下这个过程中咱该怎么去做,给各位说一下他这里边要用到的两个接口,咱后面会做具体演示。
01:18
那两个接口是什么?咱先看一下啊,第一个接口,这个接口叫user detail service,还有第二个接口叫password equal,这是两个重要的接口,那两接口是什么?给各位我来详细介绍一下,咱先说这个user detail service这个接口。我在里边给各位来写一下,就是咱们在使用spring security中两个重要的。接口,这两个接口主要用于我们就是自定义开发,比如咱们查自己数据库、用户名、密码这个过程,刚才咱们说到第一个接口。这个接口。那这个接口是什么意思呢?给各位来强调一下啊,咱们看啊,就是我这里写到,当你就是用账户密码是由spring security自动生成的时候,那我们不需要做什么配置,但实际中咱都是从数据库查出来的,那这时候就需要我们自定义我们的逻辑来控制认证,就是我查数据库,看我这东西到底对不对,那这过程怎么做,咱来说一下啊,大家注意在刚才的内容中呢,咱曾经提到了一个过滤器。
02:31
不是,各位是否记得这过滤器叫username password过滤器,这过滤器刚才我提到它是什么作用来的,大家回顾一下,我刚讲过是不是用于接收你POS提交传过来的用户名、售后密码啊,包括你看这过程中判断它是POS提交里边有用户名和密码,得到之后咱做这个认证,如果说咱没做任何配置,他就用默认的user和你生成密码做这个过程,但是现在比如说啊,我们要用我们自己的数据库,用密码,那我们需要怎么做呢?这里边就要用的这个过程,那咱做法就是首先咱也是写过滤器让它。
03:12
就是继承这个username帕多过滤器,然后在里边就是怎么做重写它的方法,这个方法中得到我们传过来用户名,密码,然后我们查数据库做判断,当然判断之后无外乎是成功还是失败吗?如果你成功的话怎么做,咱们看一下啊,它的这个负类。在父类中啊,有一个方法。咱往下找这方法,这个方法大家看是不是叫ceful,是不是成功了,还有一个叫unsceful,也就是说你认证成功会掉这个方法,认证失败会掉这个方法,所以咱要自己写的话,怎么写,我觉得各位应该会写了,我们自己写个类。是不是继承的,然后重写里边那个S的方法,还有里边那个叫做刚才咱们看到的两方法,一个叫。
04:05
往下找这个successful这个方法,一个叫unsce方法,咱们在那个access方法中得到用密码查数据库,然后做校验,如果成功的话,他去调这个方法,如果失败的话是标的方法,所以里边就这过程。咱后面肯定正开发,但是这过程中你看啊,在我这里边,我要出现这个access方法,这个过程呢,它只是来得到用名密码过程,但你真正那个查数据库,咱需要单独去写,那查数据库写到哪里。给大家强调,就是写到我们这个接口中,用它的过程就是去查数据库这个过程。不知各位是否听清楚啊,我再说一遍,如果说你要自己去查数据库,那怎么做?咱们写个类继承这个filter,然后里边在accept中得到用密码,如果认证成功,第里边的successful,如果你认证失败,调uns successful,但是咱们查用户名和密码,就是你查数据库过程,这里边肯定不在这里写,咱需要在这个user detail service里边写你查数据库的过程,这个接口作用就这个意思。
05:22
给各位写一下啊,说的通俗点就是我们查询数据库那个用户名和密码的过程,你是写到这个接口中来,这个就是第一个重要接口,那怎么写,咱看一下,后面咱都会引食到,做法很简单,咱也是写个类,是不是现这个接口,然后接口中有个方法叫load username load user by username,咱传入用户名,然后它会里边有对应的这些方法,最终咱们就返回它里边一个对象。这个对象注意啊,是spring security中提供了一个对象,是一个user,一个类,咱需要把这user做个new,然后做个返回,那这user咱看到啊,就看着我这个笔记中就是这个类,它是security中提供的一个右侧类,咱们把这类做一个。
06:13
对象的创建里边有用户密码,还有你对应的权限就可以了,所以这是第一个重要接口,叫user detail service,后面咱会有具体例子演示,现在给各位做个介绍,就刚才我介绍到了,如果你自己查数据库,这个过程怎么做,咱需要自己继承这个类重写里面的方法,然后写一个类实现user d,它有接口把它做到。这个啊是咱提到的,然后把这过程就是我刚才说到的,在里边给各位快速写一下啊。就是首先第一个我们创建一个类,让它继承咱们刚才这个filter这个类就是它。把这个打过来。继承它,然后集成之后咱们需要重写里边的。
07:00
三个方法,咱们第一个方法就是那个accept得到用户名密码方法,第二个方法。就是cessful成功,第三个方法unsuccessful失败,然后咱们还要创建一个类,让它实现,咱们这个叫user detail。啊,Deta。L。实验这个接口在里边,我们要编写查询数据库那个过程,然后编写之后让他返回一个user对象,这个user对象是里边提供的一个对象。就是我们的安全框架中提供的一个对象,咱把它按照对应的格式返回就可以了,所以这个啊,就是user detail t service这么一个接口介绍各位把它先知道,后面咱会去演示。这个就介绍完了,然后介绍完之后下面还有一个接口,这接口比较简单了,它叫password eo。
08:04
那各位来写一下这个接口是干什么的?我来强调啊,比如说我们注意啊,在我们实际的操作中,如果咱们要存密码,咱是不是肯定不是明文存储,就是什么叫铭文,就是你能看懂的东西,对密码我们非要加密,所以这个password你抠的是什么意思呢?就是在里边提供一个加密你的密码,或者加密的一个接口,它可以对应的密码这个加密。那这个叫passwordo,比如说咱们后面我们要返回这个user对象,咱看到里边是不是有username password password要加密,那怎么加密,用这个password以code对咱数据做个加密,里边啊就是new这个对象,然后用它的方法把这个可以做到,我这里边有一个简单例子。这个很简单啊,就是你你看啊,用这个对象调这个以后的方法,把你那种做加密就可以了,然后把这那种直接通过user对象返回就可以了,这是一个就是数据加密的一个接口。
09:13
咱们一般用于咱们返回那个user对象里边的密码的一个加密,因为这种加密方式,Security只认这种方式,别的方式他不认。所以这样的话,把两个接口我们就做了一个介绍,这是关于我们spring security原理部分的一个说明,最终快速总结一下啊。第一个基本原理本质上就是过滤点里边有十几个这个过滤器,然后咱通过源码也看了几个主要的第二个过滤器怎么加载的,咱通过源码也看了一个基本的过程,然后第三个里边有两个重要接口user底还service是用于查数据库过程在里面编写,但你要自己写,就要按照我这过程做到包一个password e coded是不是这个数据进行加密,咱一般用于返回那个user对象里边的密码加密。
10:07
所以这是关于security的一个基本原理的一个介绍。
我来说两句