关于登录-Sha256Hash+salt 秘密 jwt Token
登录有很多种实现方式参考以下文章 |
https://zhuanlan.zhihu.com/p/508886081 https://blog.csdn.net/weixin_42193813/article/details/110943055 |
简单描述一下登陆的流程: 1、登录一开始先请求验证码,后端响应codeImg和codekey 2、前端 From 表单填写用户名和密码,还有验证码、
3、数据通过网络协议Tcp三次握手建立与服务器通道,传给服务器 服务器3.1校验验证码,3.2查库,3.3解密校验密码,3.4根据user的id 通过JWT生成Token和Expire返回响应 3.1验证码校验是用 uuid 和 captcha校验的,此处uuid就是请求验证码响应的codeKey 3.2查库 3.3密码 user.getPassword().equals(new Sha256Hash(form.getPassword(), user.getSalt()).toHex()) . 3.4、返回用户认证Token 4.跳转 info请求 系统拦截token信息进行用户认证 |
||||||||
关于密码加密 常见加密算法 非对称加密算法:RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用) Hash算法:MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HMAC-MD5、HMAC-SHA1(是一种不可逆的算法) SHA-256:
加盐
|
||||||||
用户安全Tokoen 根据用户的id生成一个tonken 密钥 登录
登录成功调用 info 接口认证你的账号信息,认证就要用到 Shiro 拦截到系统token,并返回token对应用户信息
认证与授权介绍 简单说下认证,认证就是你给服务端一段信息,这段信息服务端收到会跟之前你注册的信息进行比对,比如在无任何加密的情况下将 账号 , 密码 输入 form表单发送请求到服务端,服务端根据你之前注册的账号密码进行比对,如果比对成功,说明认证成功,否则认证失败;复杂一点的认证就是 将你的账号 ,密码进行封装为另一种形式通常称为凭证,签名之类, 再将这种形式凭证的东西发给你,然后每次请求你都带上凭证而后端根据你发送的凭证信息进行解密比对,比对成功就说明认证成功,否则认证失败; 简单说下授权,现在的权限设计基本都是基于 用户 角色 , 权限 方式进行设计, 故一个用户拥有什么样的权限都基于拥有什么样的角色,我们可以给每个角色赋予不同的权限,然后认证成功之后就可以给用户进行授权(也就是将用户拥有的角色,权限返回出去就ok,每次请求的时候附带上权限信息即可,服务端再根据附带的权限信息进行判别);
认证流程:大致的认证流程是其实我们经常使用的没这么复杂, 首先就是 用户发送请求 , 我们拦截请求,在将请求 信息 通过 security manager , 其 内部就到了 Realm 进行 认证 与授权, 最后将请求到达服务端,服务端封装好数据返回给前端; shiro配置如下
|
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南