安全框架SpringSecurity

1.登陆校验流程:

登录只有认证,没有鉴权

前端传过来用户名和密码,服务器去数据库中进行校验,正确的话根据用户名id和盐生成一个JWT ,然后把token返回给前端前端 在每次请求中都在请求头携带token服务器进行token解析 出用户id然后去数据库中查找是否有这个id ,这个id是否有权限,才会允许访问相关资源。

2.认证流程详解:

注意这里的接口,以后会实现接口和重写类

  1. 提交用户名和密码
  2. 封装Authentication对象用来装用户名和密码(无认证和权限)
  3. 调用ProviderManager的authenticate方法进行认证
  4. 调用DaoAuthentication的authenticate进行认证
  5. 调用 loadUserByUsername方法 根据用户名查询用户(会继承 UserDetailsService接口 然后重写loadUserByUsername在数据库中查找Username)。
  6. 通过用户名在数据库中查到一个对象,放入UserDetails对象(数据库查出来的)中
  7. 比较Userdetails对象的密码和Authentication对象的密码是否一样
  8. 如果一样就把Userdetails的权限信息设置到Authentication对象中
  9. 返回Authentication对象
  10. 使用getContext.setAuthentication来存储认证(Authentication对象)

3.关于token解释:

使用createJWT(用户id);来生成token

使用parseJWT(token);来解析token得出用户id

JWT是盐+用户id生成的token

存储redis的策略:
  1. 将token当作key,登录对象存放到redis
  2. 将userid当key,登陆对象当作value,这样每次请求都需要解析
为什么要使用token?

当用户成功登录系统时,服务器会生成一个唯一的 Token 并将其返回给客户端。客户端可以在之后的请求中将该 Token 作为凭证,服务器通过检查 Token 来确认用户的身份。如果不使用token,使用用户id当作登陆凭证,别人很容易模仿 ,所以才使用token,模仿不了token

相关推荐
lsec16 分钟前
代码注入之Hook注入
安全
QING61826 分钟前
Android Jetpack Security 使用入门指南
android·安全·android jetpack
执念WRD35 分钟前
Thales靶机在网络安全教学与实战中的应用与价值
安全·web安全·thales
神秘的土鸡42 分钟前
Linux防火墙基础部分Firewalld防火墙(小白入门级别)
linux·运维·服务器·安全
name_S561 小时前
尝试在软考62天前开始成为软件设计师-信息系统安全
学习·安全·系统安全
Blockchina2 小时前
第 1 章 | 开篇词:Dapp安全 区块链安全 Web3安全 区块链合约一旦部署,安全就是生死线
安全·web3·区块链·智能合约·solidity·合约审计
腾讯云开发者2 小时前
大模型时代,安全如何洗牌?
安全
风之旅人-d42 小时前
XSS复现漏洞简单前八关靶场
前端·安全·xss
熙丫 133814823863 小时前
数字化攻防战场的进化论:红蓝对抗训练如何重塑网络安全范式
安全·web安全
IYU_10 小时前
VulnHub-Web-Machine-N7通关攻略
服务器·安全·web安全·网络安全