`

RESTful,在不用session的情况下做用户认证

 
阅读更多

最近在研究restful,在restful协议中,强调不使用session,但可以少量使用cookie。以保持restful的无状态性。

但是在实际使用中,有一个最大的问题,就是当应用需要用户登陆认证时,应该怎么处理。

在这里我的处理方法主要是把用户登陆后,把用户名+密码+ip地址+最后更新时间通过一个可逆加密后做为token,写入cookie,然后在需要认证的应用时,由php等程序读取cookie中的token,并把用户名、密码、ip地址及最后更新时间解密出来。

先判断时间是否过期,过期的话,清除cookie,要求重新登陆!

 

再判断cookie中的ip是否与当前客户端ip一致,如果不等,要求重新登陆。

时间和ip都通过的话,则把用户名、密码做判断,判断是否正确,正确的话,把用户基本信息存在一全局变量中!

做后续应用,同时把生成新的token(主要是时间)写入cookie。

这样的话就解决了三个问题

第一、时效,cookie有一个生存时间、同时在token中也存储时间,方便让令牌失效;

第二、解决了cookie欺骗问题,因为token记录了客户端的ip地址;

第三、解决了安全问题,采用可逆加密,就算得到token在没有解密key的情况下也无法破解得用户名及密码。

还有一个情况,同时把token保存到服务器,这样更容易控制!但是把东西记录到服务器的话,其实它不就是session了么,伪session而以,所以还是不建议这么用!

[转自:http://www.phpabc.cn/restfulzai-bu-yong-sessionde-qing-kuang-xia-zuo-yong-hu-ren-zheng.html]

分享到:
评论

相关推荐

    .net core 3.1 WepApi 前后分离身份验证及webapi调试demo ,jwt+swagger

    在cookie-session方案中,cookie内仅包含一个session标识符,而诸如用户信息、授权列表等都保存在服务端的session中。如果把session中的认证信息都保存在JWT中,在服务端就没有session存在的必要了。当服务端水平...

    python中JWT用户认证的实现

    在前后端分离开发时为什么需要用户认证呢?原因是由于HTTP协定是不储存状态的(stateless),这意味着当我们透过帐号密码验证一个使用者时,当下一个request请求时它就把刚刚的资料忘了。于是我们的程序就不知道谁是谁...

    Django rstful登陆认证并检查session是否过期代码实例

    一:restful用户视图 #!/usr/bin/env python # -*- coding:UTF-8 -*- # Author:Leslie-x from users import models from rest_framework.decorators import action from rest_framework.response import Response...

    net core集成jwt

    随着技术的发展,分布式web应用的普及,通过session管理用户登录状态成本越来越高,因此慢慢发展成为token的方式做登录身份校验,然后通过token去取redis中的缓存的用户信息,随着之后jwt的出现,校验方式更加简单...

    详解Go-JWT-RESTful身份认证教程

    JWT(JSON Web Token)是一个非常轻巧的规范,这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息, 一个JWT由三部分组成,Header头部、Claims载荷、Signature签名, JWT原理类似我们加盖公章或手写签名的的...

    基于E2EE的无状态认证JsonWebToken算法、常用Web算法模块-易语言

    1、支持跨域访问: Cookie是不允许垮域访问的,这一点对Token机制是不存在的,前提是传输的用户认证信息通过HTTP头传输. 2、无状态(也称:服务端可扩展行):Token机制在服务端不需要存储session信息,因为Token 自身...

    SpringAll_wuyouzhuguli.tar.gz

    Spring Boot Shiro用户认证 Spring Boot Shiro Remember Me Spring Boot Shiro权限控制 Spring Boot Shiro Redis Spring Boot Shiro Ehcache Spring Boot Thymeleaf中使用Shiro标签 Spring Boot Shiro在线会话管理 ...

    python入门到高级全栈工程师培训 第3期 附课件代码

    05 磁盘用满的两种情况 06 软连接和硬链接 07 软连接和硬链接补充 第7章 01 ip地址与子网划分 02 ip地址配置 03 虚拟机网络模式 04 三层隔离验证试验 第8章 01 上节课复习 02 软件包介绍 03 rpm软件包管理 04 ...

    大型分布式网站架构与实践

     在开放平台体系下,OAuth协议如何保障ISV对数据的访问是经过授权的合法行为。  3.1 常见的Web攻击手段 128  3.1.1 XSS攻击 128  3.1.2 CRSF攻击 130  3.1.3 SQL注入攻击 133  3.1.4 文件上传漏洞 139  3.1.5...

    积分管理系统java源码-production_ssm-master:ssm

    shiro权限控制,结合ajax实现了异步认证与异步授权,同时实现了细粒度的权限动态分配(到按钮级别);添加了shiro session过期的登录跳转 jQuery EasyUI开发前端页面,利用jQuery文件上传插件实现拖拽上传的效果并对...

    yelp-camp:Udemy课程中的一个Node.js Web应用程序项目-Colt Steele的Web Developer Bootcamp

    创建,编辑和删除帖子和评论上传露营地照片在Google地图上显示露营地位置搜索现有的露营地使用基本功能管理用户帐户: 通过电子邮件确认重置密码(已禁用) 设定个人资料页面并进行注册Flash消息响应用户与应用程序

Global site tag (gtag.js) - Google Analytics