00:01
各位大家好,欢迎继续观看上硅谷视频,在刚才内容中呢,给大家介绍了spring security它的基本原理,包括里边过滤器的加载过程,以及两个重要的接口,那咱们下面继续往下学习,咱下面要讲什么呢?给各位先做个说明,我们下面要学习就是spring security,在我们的web项目中,它里边如何做这个权限的控制,就是web开发中一个权限控制的一个方案,其实咱主要讲的是在web项目中咱们如何用这个security做到这个认证。还有他这个授权,主要我们来讲这个过程在外部项目中如何做认证和授权,那下面给各位就详细来说明一下,首先我们先来说这个认证,认证呢咱之前应该介绍过,其实他说的通俗点就是咱们通过用户名和密码进行登录的过程,这个过程就叫认证,那认证呢,大家注意啊,我们之前呢,在写这个入门案例的时候,咱们用的是不是他这个默认的用户名额,然后他的密码是不是由这个设出来的密码,而这个用户名密码其实咱们可以怎么做,我们可以自己进行设置,包括可以查数据库进行实现,所以下面给各位就来说明这个该怎么去做。
01:34
那咱们主要讲的内容就是第一个内容。如何来设置我们登录的用户名和密码,那怎么做呢?咱先做一个总体说明,这个设置呢,我们总体上可以给它分成有三种方式。首先第一种方式,咱们通过配置文件进行配置,也就是在损那个ob.pro的配置文件中,我们可以做配置,这是第一种方式。
02:04
然后里边呢,还有第二种方式。第二种方式怎么做呢?咱们可以通过一个叫配置类进入实验,运用配置类里边一些写法更加方便,用配置文件也可以做到,这属于第二种方式,然后里边呢,还有第三种方式,第三种怎么做呢?咱就自己来自定义来编写一个就是实现类进行操作,这个咱们在之前介绍作,在spring security中有一个重要的接口叫user detail service,咱们就实现这个接口,然后用它通过查数据库,包括这些方式做到,就是自定义编写这个实验类来设置用户名、密码,所以这是如何设置用户名和密码的三种方式。那我下面给各位咱们就分别来做个演示,首先我们看第一种方式。咱们就是通过配置文件。
03:03
进行设置,那怎么做,给各位快速写一下,这个过程应该说很简单,咱就来到损部的application里边,在里边加上配置,一个设置它的用户名,一个设它的密码,那下面给各位来设置一下。那我们来找到在项目中找到application.properties里边加上它的配置,第一个配置spring点点上user.name后面加上它的用户名,比如我们叫这个at硅谷。然后咱们再来设立一下它这个密码,比如说也叫at硅谷,这样的话我们就完成了它的配置,这就是里边的第一种方式,通过配置文件来设置它的用户名和密码,这个是用户名,这个是密码,这样的话咱们把它就快速做到了。
04:01
这种方式应该说很简单,各位应该能给他快速完成出来,然后完成之后咱们下面把这个来做个测试,怎么测试呢?我现在把我的服务启动起来,然后启动之后咱们还是访问我们的controller。默认情况下,他肯定要认证之后才能访问,而认证跳转到咱的登录页面,在登录页面中我就用这个at硅谷这个用户名密码进行登录,咱看它能不能正常登录,那咱们来做个测试,我现在把服务器我们进行启动,咱来试一下啊。各位看,现在已经启动起来了,当然各位发现啊,当我加上配置之后,你发现在这里边没有密码的输出吧,好像是没有,因为之前没有加,是不是有,所以你加上之后呢,它就会找你配置文件,如果配置文件中或者配置类中没有这个配置,它就给你生成一个密码,如果你有的话,那就用你这个用户名或者密码,那现在这里边没有输出,再用它做登录,我们做个测试来到里边访问。
05:11
咱们看啊,跳转到动页面,那我们用这个at。硅谷用户名包括at硅谷密码。我们登录。大家看是登进来了,所以这个就是设置用户名和密码的第一种方式,通过配置文件做到各位把这个能给他牢牢记住,应该是一种比较基本的方式。然后这个做到之后,给大家再来演示第二种方式,就这种方式通过配置类做到。就是咱可以用配置文件,也可以用配置类,那我下面给各位咱就写一个配置类,配置类怎么写,给各位说明一下啊,首先呢,咱们在里边呢,建一个类,然后上面加一个configuration在里边呢,我们让这个类就是它要继承另外一个类,然后实现我们的过程,那各位我现在快速我们来写一下。
06:12
好,我们来实现一下啊,首先这里边呢,为了明显,我把这两个配置先给它注释掉,为了咱们看到更明显,先给他注掉,然后注掉之后呢,在这里边,比如现在我在这个代码中再给它创建一个包,然后里边呢,我创建一个配置类,这个包我叫con,然后里边我写上一个配置类。这类我给它起个名字,比如名字我就叫这个conig。Uri。TY把这个我们做个创建,然后创建之后咱们在这个类上边加上一个注解,这都是spring里边知识configuration大,因为我这个配置类是我们security中用到一配置类,所以咱让他呀需要继承一个类,这个类是security里边提供的一个类,我给大家写一下,它叫做web。
07:19
Eriy。叫这个config,比如说这里边我这个搜一下啊config。我在里边搜索一下。然后咱们看一下这个类,因为咱们现在要继承这个类。我搜索全部。Fi。GRERE。咱给他搜索到啊。叫做a de。啊,就是这个,咱们现在要继承这么一个类,这是由spring c create里边题目类,所以我们写篇类需要继承它,包括要重写里边的方法,那比如现在我给他就继承下,就是我们的这个类。
08:10
我把它包引入,然后继承之后呢,咱需要重写里边的方法,那我们要重写哪个方法,咱到里面看一下啊,就这里边有很多方法,包括你看它里边有一个叫config,咱现在先用里边的这么一个config方法,然后找到我们需要使用的这么一个内容,咱用的应该就是它。那我现在把这个给各位复制过来,咱在里边给他做一下重写。Overright,然后给他重写出来。包括咱就可以在这个方法中用这个author来设置我们登录的用户名和密码,那我们下面设置一下用奥里边有一个方法,大看这个方法啊,这个方法大家看这名字in memorial什么意思,什么内存呀,就是把它放到内存中,然后加上里边一个方法叫这个with user,里边就加上咱们的用户名,再加上一个叫password。
09:14
加上我们的密码,包括你可以加上一个角色啊,咱暂时没用到,我也可以先加一个,后面咱会用到这个特点,所以现在用它来做到一个基本效果,这是用户名,这是密码,然后这是你的角色,比如用户名咱改一个,我就叫这个Lucy,然后密码我们叫123。这个角色,比如我叫我的密,但是我之前强调过密码吗?咱一般都要进行一个加密,所以在里边可以做一个加密,加密可以用到我们之前说那个接口,那我直接写下BCRY,然后这个叫做呃,PT。Password。包括咱看一下我这个文档中,就是咱们之前说的这个接口,其实就是我们要用到的,往下找里边的这个底下,我把它直接分过来。
10:08
啊,就是他。咱们首先我先扭一下这个对象。Password等于上。这个对象。然后咱们调里边的方法,对我们的密码,我们可以做一个。加密就这个已扣的,比如我们的密码我就写一个。123。加密之后会有一个返回值,我们叫password。把password给它就传过来,这位置换成咱们加密支付密码,所以这样的话,咱们现在就通过配置类完成了里边的用户名和密码设置,直接继承spring security里边这么一个类,然后重新里边的config方法,在config方法中。设置你登录的用户名和密码,密码我们要进行一个加密处理,这样的话咱就完成了,完成之后最后我们也是做一个测试,看一下它的效果是怎么样,因为最开始咱用的是配置文件,现在改成配置类里边也是做了一个设置,所以咱们看一下效果怎么样。
11:16
现在启动了啊,然后启动之后呢,我还是来到这里边。比如说我用我刚才的用户名,咱们应该叫Lucy,密码是。123我点登录啊,大家看目前好像这里边出现点问题啊,就是他目前给我们报了一个错误,你看啊,首先在页面上体现我点这个用户名密码,然后我一登录。是不是他没有反应,还是回到这个页面,然后在我的后台控制台,你看到这里边是报错了,报这个错误。大家看什么错啊,它有这个东西从了现在什么样没有这个password已code的这个匹配,这个匹配的ID值等于空,什么意思呢?也就是说现在我这里边我的密码是不是用加密啊,加密的时候呢,它要用到里边一个接口,这接口就叫password ECO,就是咱们之前说到这个接口,所以你需要把这个接口就是创建出它一个对象,要不然默认你做加密的过程中里边会报错,因为它要去找里面的对象,目前的对象咱这里边没有做设置,所以说给他需要设置一下。
12:27
那怎么做呢?里边我们用注解方式加个B,然后加上这个接口名字叫password这个。已扣等。就是咱们刚才看到的里边的这个。Password以后,比如说我给这方法给它起个名字,让他创建这个对象,我就叫。他word。啊,就叫他了啊。然后在里边咱就直接return new上这么一个password eota手动给它就是new上这么一个对象啊,给他做这么一个new的这么一个创建啊妞的具体说应该是。
13:07
这个对象啊。你看啊。Pass后等是一个接口,接口肯定不能直接new嘛,然后new的话肯定是new它的时间内,你可理解为这个是不是实现这个接口,所以咱们直接new它的这个对象啊,这种思路各位应该很清楚,都属于Java记入中的部分,所以现在把这个咱需要创建,因为它在过程中需要用到这个对象,默认没有需要手动再用这个B的这个注解给它创建出来就可以了。那这个创建之后,咱们现在把这个重新运行,看一下最终的效果是怎么样的,咱最终看一下啊。用户名,Lucy,密码,123。咱看一下,现在我还是来到我这里边来,我们这个访问路径是test。Hello,里边我输入用户名Lucy,密码一二三点登录。
14:00
大家看是不是登进来了,所以这样的话我们就完成了基于配置类来实现了里边的用户名和密码设置,但是用per类的时候,我刚才特别说的里边你需要把这个password以code的这个对象需要给它创建出来,如果你不创建里面报错说这个没有匹配关系,它的值是等于空,咱刚才也都看到了。这样的话把这个我们就完成了,基于配置内来设置用户名和密码,所以这样的话呢,咱就把设用密码的两种方式演示出来了,一个通过配置文件,一个通过配置类做到这个各位给他知道。当然各位可以发现啊,在实际的操作中,这种方式不管你是配置文件也好,还是刚才这种写法,是不是好像都不是特别实用啊,因为咱11中用户密码都是放到哪里。是不是放到数据库中了,咱一般肯定不是这么设置,所以咱们第三种方式就讲一下咱们怎么自己自定义用户密码,比如说我们查数据库怎么查用户密码,然后在这过程中大给怎么写,就这些过程,这些咱们讲到了,他就要写一个接口的实现类,就是user detail service,这咱们一会儿会讲到,现在大家先把这两种方式给他知道,配置文件和配置类设置用户名和密码。
我来说两句