小说系统方案搭建开发,实现系统的用户登录验证说明

简介: 本文总结了小说系统源码中常见的身份认证方式,涉及JWT和Shiro。传统的认证流程包括用户提交凭证、服务器保存Session数据、发送Session_id给客户端,后续请求携带Session_id。但这种方式在多服务器或跨域场景下扩展性差。解决方案有Session数据共享或持久化。作者将服务端维护Session信息的认证方式归类为传统方式,反之为非传统方式,后者扩展性更优。文中还介绍了实例项目的SQL建表结构,用于演示认证流程。

前言关于小说系统源码身份认证的方式,最近在工作中用到了些,想着就干脆针对目前常用的身份认证组件的实际使用,就做一个总结,会涉及Json Web Token(JWT),Shiro的常见认证方式。传统的认证流程在学习这些组件的时候,还是需要熟悉一下认证的流程,其实一般的身份认证流程也不复杂,只是由于本身HTTP是无状态协议,因此需要交互多次才能验证用户身份。用户认证的一般流程如下1、用户向服务器发送用户名和密码2、若用户信息通过验证,在当前会话(session)中保存相关客户数据,比如用户登录时间和用户角色等等。3、服务器向用户发送一个session_id,存入用户端的cookie4、用户随后访问服务器的每一次请求,都需要带上cookie中的session_id5、服务器收到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建立一个项目,然后搭建三个模块,整体接口如下准备一下SQLCREATEDATABASEdb_user_auth;USEdb_user_auth;–用户操作日志记录表CREATETABLElog(idint(11)NOTNULLAUTO_INCREMENT,user_idint(11)DEFAULTNULLCOMMENT'用户id',user_namevarchar(255)CHARACTERSETutf8mb4DEFAULTNULLCOMMENT'用户名',create_timedatetimeDEFAULTNULLCOMMENT'操作时间', 【方案部署搭建可V or TG我昵称】memovarchar(255)CHARACTERSETutf8mb4DEFAULTNULLCOMMENT'操作备注',PRIMARYKEY(id))ENGINE=InnoDBAUTO_INCREMENT=2DEFAULTCHARSET=utf8COMMENT='操作日志';–用户表CREATETABLEuser(idint(11)NOTNULLAUTO_INCREMENT,user_namevarchar(100)CHARACTERSETutf8mb4NOTNULLCOMMENT'用户名',passwordvarchar(200)CHARACTERSETutf8mb4NOTNULLCOMMENT'密码',phonevarchar(50)NOTNULLCOMMENT'手机号',emailvarchar(100)CHARACTERSETutf8mb4NOTNULLCOMMENT'邮箱',is_activetinyint(11)DEFAULT'1'COMMENT'是否有效(1=是;0=否) 【方案部署搭建可V or TG我昵称】',create_timedatetimeDEFAULTNULLCOMMENT'创建时

相关文章
|
11月前
|
存储 小程序 JavaScript
借助云开发实现小程序的登陆注册功能
借助云开发实现小程序的登陆注册功能
242 0
|
3月前
|
存储 JSON 安全
用户登录注册系统的安全性设计
用户登录注册系统的安全性设计
41 4
|
3月前
|
安全 中间件 区块链
BRC-20铭文系统开发详细教程/步骤方案/需求设计/规则玩法/源码程序
中间件技术:使用中间件技术可以简化BRC20铭文智能合约跨链系统的开发过程。中间件提供了一些常用功能的封装,例如处理网络通信、
求大家鉴定下本人开发的系统平台界面如何,请多提宝贵意见
求大家鉴定下本人开发的系统平台界面如何,请多提宝贵意见
|
6月前
|
小程序 前端开发
【易售小程序项目】修改“我的”界面前端实现;查看、重新编辑、下架自己发布的商品【后端基于若依管理系统开发】
【易售小程序项目】修改“我的”界面前端实现;查看、重新编辑、下架自己发布的商品【后端基于若依管理系统开发】
53 0
|
9月前
|
安全
视频交友源码开发搭建平台用户资料功能:小功能有大用处!
视频交友源码平台用户资料功能不仅仅对于视频交友平台是重要的,它对于很多源码搭建的平台都是非常重要的,这样的源码功能还有很多,我会为大家讲解,喜欢的可以留个关注来问我。
视频交友源码开发搭建平台用户资料功能:小功能有大用处!
|
SQL 前端开发 Java
校园外卖点餐系统——Day01【项目简介、开发环境搭建、后台系统登录和退出功能】
校园外卖点餐系统——Day01【项目简介、开发环境搭建、后台系统登录和退出功能】
168 0
校园外卖点餐系统——Day01【项目简介、开发环境搭建、后台系统登录和退出功能】
|
SQL 前端开发 Java
Java开发:实现用户注册登录的功能
在Java开发过程中,实现用户的注册功能是最基本的,用户通过手机号或者邮箱作为注册账号也是非常常见的操作方式,不管是通过手机号注册或者邮箱注册,原理都差不多,那么本文就来分享一下在Java开发过程中的用户注册账号的功能实现。
265 0
Java开发:实现用户注册登录的功能
实战:第二十章:社交类用户登录功能
实战:第二十章:社交类用户登录功能
实战:第二十章:社交类用户登录功能
|
前端开发 JavaScript 关系型数据库
后台系统登录功能改造(1) | 学习笔记
快速学习后台系统登录功能改造(1)
152 0