首页 > 应用开发 > IT综合 > 小说系统源码开发,实现系统的用户登录验证
前言
关于小说系统源码身份认证的方式,最近在工作中用到了些,想着就干脆针对目前常用的身份认证组件的实际使用,就做一个总结,会涉及Json Web Token(JWT),Shiro的常见认证方式。
传统的认证流程
在学习这些组件的时候,还是需要熟悉一下认证的流程,其实一般的身份认证流程也不复杂,只是由于本身HTTP是无状态协议,因此需要交互多次才能验证用户身份。
用户认证的一般流程如下
1、用户向服务器发送用户名和密码
2、若用户信息通过验证,在当前会话(session)中保存相关客户数据,比如用户登录时间和用户角色等等。
3、服务器向用户发送一个session_id,存入用户端的cookie
4、用户随后访问服务器的每一次请求,都需要带上cookie中的session_id
5、服务器收到session_id之后,就可以根据session_id 找到对应的session用户数据。
通过这个流程,至少应该知道了sessionid,session与cookie的区别,以及各自在web开发中的角色。同时需要说明的是,很多时候小说系统源码客户端会禁用cookie,因此更多的时候会用token机制替代sessionid,之后小说系统源码每次的请求都会在HTTP的header头中带上token。同时token还有更高级的认证用法,主要用于第三方登录的用户授权,当然这个是后话了。
但是会发现,这个流程会有很多问题,其核心就是扩展性很差,如果只有一个服务器这个是没有任何毛病的,但是如果有多个服务器,如果实现了跨域访问,这个就有点麻烦了,解决方案其实也有无非就是以下几种思路
一种解决思路就是session数据共享,让每台服务器都能从固定的地方读取session,比如将session存入统一的缓存中间件。
另一种解决思路就是session持久化,直接将用户session数据存入到数据库或者持久层,这样工作量会很大,而且性能也会有一点影响,同时针对失效的session还需要有单独的定时任务批量删除。
我个人归纳,如果需要服务端来维护session信息的,都属于比较传统的身份认证方式,如果session信息不需要服务端来维护,则属于非传统的身份认证方式,这种认证方式可扩展性较好。
本篇博客总结一下传统的认证方式,并附上相关实例。
实例
项目的搭建
用idea建立一个项目,然后搭建三个模块,整体接口如下
准备一下SQL
后续会发布相关源码,博客只介绍核心代码部分。
数据库+token的认证方式
其实数据库+token的认证也没有什么高深的,只是服务端为指定的客户生成的token替代了sessionid,然后每次客户端请求带上token即可。服务端完成对该token的验证。
token生成的方式有很多种,我们这个实例中就根据先关的元素和雪花算法生成的唯一id,并通过相关密钥对称加密生成token
token生成与验证
1、需要生成token的相关属性
2、生成token的方法,如下所示,生成的token会保存数据库,用于后续验证客户身份
3、验证token
拦截器中完成对token的验证
将拦截器交给容器管理,同时指定需要认证的路径,具体如下
由于这里我们用到了数据库存放token,因此需要有一个批量任务,定时删除过期无效的token
1、顶一个一个线程池,交给spring容器托管
2、开始定时批量,将定时任务交给指定线程池
至此,算是完成简单的token开发任务
Redis+token的认证方式
Redis+token的认证方式,身份认证流程上与数据库+token认证方式相比并没任何区别,只是存储token的地方变成了Redis,Redis本身较好的读写性能,以及可以定时设置的特性,使得维护token更加简单。由于其他流程一样,这里就只贴出Redis+token的生成和验证token的部分代码
测试步骤
主要有四个基本的接口(每个认证模块几乎都是)。具体如下
|
路径(接口名称) |
说明 |
|
/login |
登录获取token,找个接口会返回token |
|
/token/auth |
这个接口需要校验token,认证成功了才能顺利访问该接口 |
|
/token/unauth |
不需要认证就能访问的接口,区别于上一个接口 |
|
token/logout |
退出接口,该接口会失效token |
测试方式,直接用postman发起请求即可,注意请求顺序。
1、通过登录获取token
2、之后将第一步获取的token放在header中,发起需要认证访问的接口请求
这篇博客只是简单说明了传统的身份认证方式的基础框架,但其实,如果小说系统源码需要扩展,更好的是不需要服务端去维护这些信息,而是交个某种第三方组件,根据某些关键信息去自动生成,于是JWT和shrio等第三方认证组件就出现了,这些后续都会一一总结。
声明:本文由云豹科技转发自谜一样的Coder博客,如有侵权请联系作者删除
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69982461/viewspace-2844953/ ,如需转载,请注明出处,否则将追究法律责任。