00:00
好,接下来呢,我们就为这套目前谁都能访问的系统,我们使用security,加上认证和授权功能,那首先我们的步骤,第一步我们就是引入spring security模块,第一步那先来引入spring的security,那怎么引呢?我们就引相关的start来到po文件中。好,我们把这个dependency,我们来复制过来,Spring start,那么有一个模块叫security,我们来引入这个模块,它呢就会导入spring security相关依赖,这是第一步,第二步呢,我们来编写。哎,编写security的配置,当然这个配置呢,我们不用编写配置文件了,大多的配置已经写好了,我们只需要来写配置类,配置类怎么写呢?我们来推荐大家来参照spring security的官网,好,比如来我们来搜索spring,来到spring的官网,来到他项目列表里边,Spring在这。
01:11
我们看这一块呢,有个getting stuck,我们快速开始,官方呢有和spring整合的例子,来往下翻,Hello word,哎,用Java配置的,还有with BOO的,好,我们点进来,我们来写一个配置类,什么样的配置类呢,我们往下翻。前面呢是导入依赖,我们需要写一个叫web security confi adapt的这个配置类,那继承于它,然后呢叫enable web security,开启我们web的安全模式,好,那我们就来写一个配置类,我把这个配置类呢,我写在conflict里边。Class config。My security conflict。Conig,好,我们呢必须来继承外边security conig adapter,好,就是它,然后呢来标注一个注解叫enable web security,而且呢来点进这个注解,这个注解呢已经带了congu注解,所以呢我们不用给这个配置类上再来加configuration,好,这呢是我们第二步把这个复制来来记录一下,我们来编写一个spring security的配置类,这个配置类呢,必须来继承web security con adapt,那接下来我们第三步来控制请求的访问权限。
02:43
那我们怎么控制请求的访问权限呢?我们来看它的这个示例,我们可以来重写这个adapter里边的con方法,这有一个http security,我们可以来定制HTTP的安全规则,比如第一个htp author request,我们要认证请求,我们怎么授权这些请求呢?我们需要有一个叫at,也就是说我们进行路径匹配,这些路径to特奥允许所有人访问这些路径,必须有这个角色才能访问等等等等,那我们也这么来写。
03:20
好,我们来到这个配置里边,我来ctrl o打开我们能重写的方法,这样呢,有一个con是htp security,好我们来重写来我们把这个负类的我们就注掉,因为负类呢有一些默认规则,哎,有一些默认的授权规则,我们就把它逐掉,好来定制授权规则,定制请求的授权规则。怎么定制呢?我们HTTP.also request,我们要授权请求,授权什么样的请求呢?我们写一个t matter,好,Ant match,我要进行一些路径匹配,那么这个路径呢,比如我写了,我来写一个杠,杠代表呢,我们这个访问首页的请求,我们来看一下comfort里边,诶这个杠呢是我们访问首页的,那访问首页呢,让所有人都可以点permit all,然后呢,我们来继续还有一个点at。
04:23
好,然后呢,我们level一下的大家来看,Level一下的所有页面都是以LEVEL1开头的,LEVEL2下的所有页面都是以LEVEL2开头的,那我就来映射LEVEL1。下的所有请求,那么呢,我假设呢,我都必须喊子肉,哎,有一个角色,有一个什么角色呢?比如你是VIP1,哎,你的角色是VIP1,包括呢,我再来点at match,好,同样的LEVEL2之类的,好LEVEL2下的这些呢,必须点汉字肉,那是VIP2,二级的VIP才能访问,好点我们来写一个。
05:11
LEVEL3下的所有请求是咱们三级VIP才能访问,好我写一个VIP3,好我呢就简单这么一写,我来重启一下应用,我们看我们这个请求的授权规则能不能生效。好,我们首先来刷新,我们发现呢,首页能访问,我来访问普通的武林秘籍,点进来我们这一块呢,就会提示403啊,我们这个访问拒绝,拒绝的原因就是由于我们这些请求必须是有人登录进来,而且这个人的角色是VIP1或者VIP2VIP3等等,而现在呢,系统还没人登录进来,那怎么办呢?我们可以来开启登录的功能,开启登录功能,开启自动配置的登录功能,怎么开启呢?我们只需要调用HTTP,点有一个叫log,这个form log呢,来点进来它这一块呢,会有解释,我们来往上翻看它的文档。
06:21
我们这个form log呢,它就会给我们自动的生成一个登录页,这个登录页呢,会发咱们这个log请求来到登录页,好,我们把它的这些自动规则,我们可以来记录一下,这个自动的功能包括这几个,第一个login请求来到登录页,然后呢,第二个我们再来看还有什么呢?它这一块说,哎,如果登录错误,它会重定向到log error,这是处理登录错误。哎,这是重定向到这来是表示登录失败,重定向到这一块。
07:03
表示登录失败。当然这些请求的处理都是由security security处理的,我们不用写这些请求由谁来处理,然后呢,接下来还有第三个规则,它这个规则啊特别多,比如我们来一直往下翻,诶,我们这个。Log form log,我们来看后面这有form log log呢,能定义很多规则,比如我们登录的时候用户名字段用什么,密码字段用什么等等等等,那这些规则呢,我们就暂时不说了啊,更多详细规则我们一会儿牵扯到定制登录页的时候,我们再来说现在这个登录功能,我们先来开启,来看一下是什么效果。开启登录功能以后呢,我来再次来访问LEVEL1,我们先来访问首页,首页呢没问题,来访问第一个页面,然后发现呢,如果没有权限,就会来到登录页面,提示我们登录,这是spring security自动生成的页面,好,然后呢效果。
08:11
效果就是呢,如果没有权限,如果没有登录,没有权限就会来到登录页面,关键这个登录页面要输什么账号密码呢?那这些用户就得从一个地方查出来,文档这儿也有,大家可以来看一下,哎,那么这个文档呢,可以配置我们全局的这些用户信息,哎,用户名是什么,密码是什么,它的角色是什么?答,这用户信息呢,默认是在内存里,这种方式是它默认保存,这保存在内存里,我们呢,应该是连向数据库这一块演示呢,我就不连数据库了,我也这么先来演示一下control o,来重写这个带有author manager builder的这个confi这块呢,就是来定义咱们这个认证规则,前面呢是授权规则,这块呢认证规则,那默认的呢,我也给它做掉。
09:11
好,我们这个认证规则怎么写呢?我们使用author,点首先呢,我们来写一个叫in memory authority开始,我们在内存里边来查用户,如果用JDBC,也可以用JDBC等等等等,好,我来写一个in memoryity开始,然后呢点一个with user with user呢就是来一个用户,用户呢这写一个用户名,比我们叫张三,包括呢,他的密码password,比如我们来写一个123456,当这个张三的角色是什么,我们可以定义Rose,这个Rose呢角色可以写多个,比如张三呢是VIP1和。VIP2,好,我们就定义了一个用户,这一个用户定义完了以后呢,接下来继续多个用户呢,我们可以来继续点,继续我们来点一个and,来加上一个and,一个位置user,我们再来一个用户,比如我们再来定义一个李四点password,好,当然用户名密码应该都是存在数据库的,我们只是为了简单起见,在这呢,先来演示一下VIP2,他的角色呢,是VIP2和VIP3,包括呢,我们继续来一个点and。
10:32
你就来填上三个用户,With user和王五,他的密码呢,Password也是123456,还有呢,他的Rose。是VIP1和VIP3。哎,每个人呢,都有两个角色,好,我就随便写一写,那么我们有了这些用户以后呢,我再来重启一下,我们登录呢,Security就会从这些用户里边来校验用户名密码,那就能在这儿登录来测试一下。
11:06
首先呢,我来访问首页是不用登录的,那我要访问普通武功秘籍,我点一个,他要我们登录,我们先来登录一个张三,我用123456登录,我点一个login,诶我发现呢,普通武功秘籍能访问了,因为张三他是VIP1号用户,好,那我们来返回,那张三呢,现在就能访问VIP1和VIP2的,那相当于普通武功秘籍的所有他都能访问,而高级武功秘籍呢,也能访问,但是VIP3的绝世武功LEVEL3级别的,我点一下,哎,还是拒绝访问那张三是这样,我同样来测试一下李四,那我还来到login页面,那我们知道登录页面呢,来发这个login请求,那我用李四来登录123456。李四呢,他是VIP2和VIP3,所以李四不能访问普通秘籍,我点进来,诶,拒绝访问,而VIP2是能访问的和VIP3也是能访问的,登录功能的认证和授权我们就做完了,下一节课呢,我们来加上用户的注销功能,以及登录以后这一块来显示用户的信息。
我来说两句