web应用 登录模块

1.验证码
2.自动登录
3.状态追踪

为什么要用验证码

防止脚本无限次重复登录,来暴力破解用户密码或者攻击服务器

验证码的出现,使得每次登录都有个动态变量需要输入,无法用脚本写死代码

自动登录的实现

所谓自动登录,指的是当用户登录网站时勾选了自动登录,那么下次再访问网站就不需要输入账号密码直接登录了

这说明,账号密码信息是必须保存在用户这边的,因此自动登录都是不安全的!(方便的代价呀)
尽管不安全,但是我们也必须要尽力让它安全一点,有以下常用方法:

  • 密码加密
  • ip检测,自动登录时检查与上次登录的ip是否相同
  • 降低自动登录后用户的权限,如不能进行改密码等危险操作

数据存储在前端哪里呢

浏览器有3个经常保存数据的地方

1.Cookie (我用这个):后端能直接操作Cookie,保证完成任务。需防范csrf攻击。

2.LocalStorage: 无限期本地存储
不过后台无法操作这里的数据,只能由js代码操作(至于操作结果,完全看js,后端无法感知,不太可靠),我认为这里不适合保存敏感点的信息,因为前端的功能是展示,状态性的数据应该由后端直接掌控(后端能直接操作Cookie,保证完成任务)

3.SessionStorage:不同标签页数据不共享,有毛用

cookie方案

1.用户第一次登录时,后端接收到用户账号和密码,生成token,将token设置到cookie中返回
2.前端收到保存cookie
3.前端下次访问时浏览器会自动携带cookie
4.后端检验cookie中的token
6.完成自动登录功能

localStorage

1.用户第一次登录时,后端接收到用户账号和密码,经过复杂的加密(md5)后,设置一些参数后(过期时间等)返回一串token字符串
2.前端接收到字符串后,将字符串保存到本地(localstorage)
3.在发送的每个请求的header头中的Authorization字段中添加保存的token
4.后端接收请求后进行验证(token是否正确或过期),若过期,返回401
5.完成自动登录功能

如何维护前后端登录状态

状态追踪

  • Token
  • cookie
  • session
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值