常见的登录验证方法之token校验

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 简述token校验

       学习编程的小伙伴都知道,用户登录是一个大部分程序都需要的功能,其写法也多种多样,但是编程思路基本是类似的,今天我们就来介绍其中一种常见的写法,希望初入编程的小伙伴能有所获。

       说到校验,那肯定要先有用户注册和登录

用户注册

       将用户的账号,密码insert进数据库,注意,一般密码会采用加密存储,且不允许逆向解析如:MD5。

       用户注册时可能需要手机号校验验证码,我们一般的思路如下:

1.前端校验手机号格式,通过再调后端发送短信验证码的接口

2.后端最好也加校验,因为前端的校验是可以掠过的,防止不必要的安全问题

3.前端输入手机号,调后端接口校验,判断手机号是否存在,一般异步获取,手机号未注册进入下一步。

4.后端接收到前端手机号生成随机验证码(这个随机数自己写方法生成),存入redis中,手机号为key,验证码为value。同时发送短信到用户手机,这里发短信一般是买短信服务商的短信服务,具体写法建议看对应的官方文档。

5.用户输入验证码进行校验,后端用请求参数中的手机号去redis中拿到验证码,和前端输入的验证码进行比较,相同则通过校验,后进行用户注册操作。

用户登录

       用户输入账号,密码进行登录,这里比较简单,不过多赘述,前后端都要校验对应格式,查询用户是否存在,判断密码是否正确,账号是启用,还是停用,然后更新用户表的登录信息,生成一个随机的token,将用户信息存到redis,key为token,value为用户信息,这里存储的东西视业务需求而定,登录成功返回token给前端。

登录校验

       前端拿到了我们后端返回的token,将其存储在缓存(如:local storage)中,每次请求在请求头带上token,后端校验就是用token去redis中拿值,如果拿到了,就表示校验通过,允许访问对应接口。

       可能不是所有接口都需要登录才能访问,所以需要配置过滤规则,不同语言不同框架的写法可能不同,但其底层的逻辑归根结底就是一个判断,判断访问的接口是否在白名单中,在就不校验,不在就校验是否登录。

       那么是如何设置白名单的呢,很多框架都是有固定写法的,会用就行,这里说说自己写的时候怎么写:先获取请求的全路径,可以是整个前端发送的url,随便是什么,简单处理一下,保留接口的全路径,一般是 /admin/user/userList 这种,以 '/' 为分割符号,转化为数组,获取到最后的userList,比较userList是否存在于白名单中,存在就不需要校验。

以上就是请求头带token的整体编程思路

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
前端开发 API C#
c#实现简单Token口令验证
  最近一个项目发现手机验证码总是被人盗刷,一秒钟刷了1百多个,很明显这种行为是通过软件自动提交的,自动发帖机原理类似,解决这个问题目前有两个方案。   出现这个问题原因:请求手机验证码Api时没有任何带任何验证,只要请求了手机号正确就执行发送操作,软件或代码很容易伪造请求过程。   解决方案有很多种,可以选择下面一种或几种组合起来使用。   方案1:用户获取手机验证码时候弹出图片验证码,输入后再发送。
1575 0
|
3月前
|
JSON 数据安全/隐私保护 数据格式
用户登录权限校验 JWT【详解】
用户登录权限校验 JWT【详解】
61 1
|
3月前
|
安全 NoSQL Java
JWT和Security 登录权限判断和token访问和让token失效
JWT和Security 登录权限判断和token访问和让token失效
|
5月前
|
SQL 数据安全/隐私保护
带token的多用户登录(注册直接粗暴解决)
带token的多用户登录(注册直接粗暴解决)
带token的多用户登录(注册直接粗暴解决)
|
5月前
|
存储 缓存 NoSQL
【视频+源码】登录鉴权的三种方式:token、jwt、session实战分享
【视频+源码】登录鉴权的三种方式:token、jwt、session实战分享
117 1
|
5月前
|
存储 JSON 算法
登录认证-登录校验-会话技术方案选择和对比(cookie、session和JWT令牌)
登录认证-登录校验-会话技术方案选择和对比(cookie、session和JWT令牌)
131 0
|
存储 JSON 安全
JWT验证用户信息功能与OAuth2协议
JWT验证用户信息功能与OAuth2协议
105 0
|
存储 算法 前端开发
如何生成以及校验token
如何生成以及校验token
|
前端开发
【在线教育项目】整合JWT权限校验,登录成功生成token
【在线教育项目】整合JWT权限校验,登录成功生成token
124 0
【在线教育项目】整合JWT权限校验,登录成功生成token
|
JSON 自然语言处理 算法
C# JWT权限验证
C# JWT权限验证
C# JWT权限验证