粉丝1.4万获赞15.7万

大家好,今天这个视频我们来看一下怎么在前后端分离的项目中使用 spring security 进行认证。当前使用的 spring boot 版本是二点七点九。我们先来规划一下想要实现的功能,一个自定义登录接口, 返回 g w t 格式的偷看。一个验证偷看认证结果的测试接口。一个自定义退出接口, 用来清除 redis 中的缓存信息。首先在泡沫文件中引入 security 的 starter 以及数据库。 呃,发自解散 redis 和 g w t 相关的一些依赖。 application 的样貌里边不需要进什么配置。数据构表结构我们,嗯,这里只用到一个右侧表, 因为我们用到了 mabet plus, 它需要签订一下它的扫描范围。 菜叶键在这个启动列上加上 map skin spring security the starter, 严重后默认就自动生效了。不过它是前后端部分里的表单登录方式, 登录后自动跳转到目标页面,是通过 search 进行状态管理的。我们想要实现前后段分离,就首先需要去掉默认的登录表,通过这个接口 接受登录请求。我们新建一个 security 管理类,加上 configuration 主键和 enable versculity 主键。在 security 管理类中新建一个认证,并实现它里边的 authenticated 和 support 这两个方法。 support 这个方法是判断当前请求的参数 是否由该认证并进行处理 or send k 的。这个方法就是具体的认证逻辑了。这是从前端获取到的用户名凭证,凭证就是密码。 这个 user details service 的 lower user by user name 是自带的一个键 接口。通过实验这个接口从数据库中获取我们需要的用户信息。我们这是从右侧表对用户名进行查询,他如果不会空,就把它封装到这个 logo 右侧中。 这个就是我们自定义的 user details 的实现类认证,并建好后就要写接受外部请求的 login 接口,也就是这个接受一个 login user, 根据传入的用户名和密码构建出 username password authentication token, 然后调用前面在 security 管理类中定义的认证,并根据 认证编的逻辑,我们可以知道 principle 对应的就是这个 lower user by use name 返回的这个 logo user, 所以我们可以从中获取到对应的 user 对象, 然后就可以用 user 的 id 生成对应的投根串光,后续的投根传递使用啊。最后我们把完整的用户信息存入 redis 中, 那个 user id 作为 k。 接下来就是验证 token 认证结果的测试接口,我们需要能对前端传入的 token 进行处理啊,这里就需要新建一个 token 认 正过滤器,我们这里继承 one super request filter, 这个过滤器可以避免请求被多次处理。从 request the header 中获取偷看信息,验证它是否过期, 如果没有过期的话,从中解析出游戏 id, 然后根据用户 id 查询用户信息, 如果有的话,我们需要更新一下用户信息的操作时间,然后把用户信息封装一下,然后传入 security context hold 中, 供过滤器后续的业务逻辑使用。最后方形和 hello 接口就是我们的透根认证结果测试接口,测试 通过的话会显示这一串走不串。登录接口开发好以后,还需要在 security 管理类中对这个接口进行放行。在 filter 亲 这个方法中,把 login 接口配置为允许匿名访问,因为我们现在是前五段分离通过头根进行认证的,所以这里 就不使用 session 进行存储信息了。最后把 g w t 这个 filter 放到用用户名密码认证前面,不然的话会先被用户名密码认证过滤器抛出认证异常。认证异常可以通过实现 authentication intric point comments 方法来进行处理,过滤器抛出的异常需要使用 response 的 get a writer the print 进行输出。我们这里还需要对密码进行一下加密处理,毕竟不能在数据库里直接存铭文密码。 我们可以在这个 password incode 这个 being 中设置需要的加密方式,然后在这个 认证并中可以对输入的密码和系统保存的密码进行比对。我们测试的时候可以用他的这个 inco 的方法生成加密的密码。最后就是 自定义退出接口,我们在这里可以清除 redit 中的还在 信息,因为退出那肯定是已经登录的时候才需要的,所以说我们可以从前端获取到 tok, 通过这个认证过滤器 把用户信息存入 security context 勾搭中,在这个 log alt 方法中可以直接获取到用户信息,最后根据用户 id 删除掉 redis 中存储的内容就可以了。我们来演示一下, 我们先看一下异常,因为我们现在这个投片已经过期了,所以说我们这边直接返回这个海捞这个接口可以看到可以返回一个用未登录的异常,这个异常就可以被这里拦截到, 朋友们登录一下,输入用户名和密码,复制一下返回的这个图片,把这个内容替换掉,可以看到这个内容就是我们 接口里边打印的内容,因为我们这里边,嗯,每次调用这个都会有更新,我们可以看一下,现在是三十三秒, 可以看到可以正常的更新退出,也需要使用这个图片退出成功, 这个时候就没有了,我们再来访。 hello, 这是能正常的打印出这个用户认证失败,这个异常。好了,上面就是在前后端分离的项目中使用 spring security 进行认真的演示,希望能对大家的 工作学习有所帮助,谢谢观看下个视频,再见。