当前位置: 首页 > news >正文

网站添加二级域名怎么创造一个网站

网站添加二级域名,怎么创造一个网站,做钓鱼网站软件下载,网站开发 产品经理概述 cookie、session 与token 的区别 Cookie的作用 cookie的存储量很小,一般不超过4Kcookie并不会保存很多信息,一般用来存储登录状态cookie是以键值对进行表示的(keyvalue),例如nameli,表示cookie的名字是name,cookie携带的值是licookie的存储分为会…

概述 cookie、session 与token 的区别

Cookie的作用

  1. cookie的存储量很小,一般不超过4K
  2. cookie并不会保存很多信息,一般用来存储登录状态
  3. cookie是以键值对进行表示的(key=value),例如name=li,表示cookie的名字是name,cookie携带的值是li
  4. cookie的存储分为会话存储和持久性存储
  5. 如果cookie会话性那么cookie仅会保存在客户端内存中,当我们关闭客户端时cookie就会失效
  6. 如果cookie为持久性,那么cookie会保存到硬盘中直至生存期结束或者用户主动将其销毁

Session是什么

  1. 在网络应用中成为会话控制
  2. Session用来存储特定用户会话所需的属性及配置等信息
  3. session保存的位置在服务端

为什么需要session

  1. 我们目前使用的互联网应用层协议基本上都是基于HTTP和HTTPS
  2. HTTP和HTTPS是无状态的,只负责请求和响应
  3. 所以导致如果没有额外处理的话服务器是不知道你是谁,更无法根据你是谁给你展现和你相关的内容

cookie存储在客户端,session存储在服务端,浏览器请求时将cookie携带至后端,服务端根据cookie中的关键信息找到对应的session,用来保持会话

什么是token

  • token其实就是一段加密的字符串
  • 一般由身份标识,时间戳,用户必要信息等内容组成
  • tonken的传输就是一个加密和解密的过程

可以看到 服务端是不保存token的
在这里插入图片描述

JWT–JsonWebToken 实现原理

jwt

在这里插入图片描述

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

它是一个由.连接组成的三段字符串

服务端加密的过程

第一段字符串
是头信息,头信息包含算法和算法类型,这部分字符串由头信息进行base64加密得到的,它是token的第一段字符串

第二段字符串
是我们自己定义或者存储的一些信息,可以包含用户名过期时间等,然后对此进行base64加密得到token第二段字符串

第三段字符串

第一段base64加上一个.然后加上第二段base64再加上“密钥”,然后再来一个base64最后生成了token第三段字符串

以上3段字符串通过.进行连接生成最后的token返回给客户端

服务端解密的过程
可以从url中得到用户传递过来的token:requestGET.get(“token”)

第一部分:我们用base64解密得到头信息
第二部分:我们用base64解密得到自己再token中存储的数据
第三部分:把第一个部分加第二部分内容再加上我们自己的密钥进行base64加密得到一个base64字符串,最后用这个字符串和用户传递的第三部分进行比较

DRF-JWT 用户登录认证实现(一)

user/views

class LoginView(GenericAPIView):def post(self,request):return_data = {}request_data = request.dataemail = request_data.get("username")user_data = User.objects.get(email=email)if not user_data:return ResponseMessage.UserResponse.other("用户名或者是密码错误1")else:user_ser = UserSerializer(instance=user_data,many=False)# 用户输入的密码user_password = request_data.get("password")md5_user_password = get_md5(user_password)print(md5_user_password)# 数据库的密码db_user_password = user_ser.data.get("password")print(db_user_password)if md5_user_password != db_user_password:return ResponseMessage.UserResponse.other("用户名或者是密码错误2")else:token_info = {"username":email}token_data = create_token(token_info)return_data["token"] = token_datareturn_data["username"] = user_ser.data.get("name")return ResponseMessage.UserResponse.success(return_data)

user/urls

path("login", LoginView.as_view()),

utils/jwt_auth.py

import datetimeimport jwt
from rest_framework.authentication import BaseAuthenticationfrom muxi_shop_back.settings import SECRET_KEYdef create_token(payload,timeout=1):headers = {'alg':"HS256",'typ':"jwt"}payload["exp"] = datetime.datetime.utcnow() + datetime.timedelta(minutes=timeout)result = jwt.encode(headers=headers,payload=payload,key=SECRET_KEY,algorithm="HS256")return resultdef get_payload(token):result = {"status":False,"data":None,"error":None}try:payload = jwt.decode(token,SECRET_KEY,algorithms=["HS256"])result["status"] = Trueresult["data"] = payloadexcept jwt.exceptions.DecodeError:print("token认证失败了")result["error"] = "token认证失败了"except jwt.exceptions.ExpiredSignatureError:print("token已经失效了")result["error"] = "token已经失效了"except jwt.exceptions.InvalidTokenError:print("无效的、非法的token")result["error"] = "无效的、非法的token"return result# 用户在url中进行token的参数配置
class JwtQueryParamAuthentication(BaseAuthentication):def authenticate(self, request):# 从url中拿到tokentoken = request.GET.get("token")result_payload = get_payload(token)print(result_payload)return (result_payload,token)class JwtHeaderAuthentication(BaseAuthentication):def authenticate(self, request):# 从头信息中拿到tokentoken = request.META.get("HTTP_TOKEN")print(token)result_payload = get_payload(token)print(result_payload)return (result_payload,token)

测试一下 比如执行某个类下面的方法之前都会先获取token,验证其是否失效
这里验证地址列表,通过url传递token
在这里插入图片描述
先登录获取token
在这里插入图片描述
获取地址列表
在这里插入图片描述

同时终端也打印了信息,说明方法被调用了
utils/jwt_auth.py
在这里插入图片描述

在这里插入图片描述

再次请求token就失效了,所以我们可以request.user.get(“status”) 判断用户登录状态是否失效
在这里插入图片描述

address/views

把定义的验证类加在该方法下,表明访问即验证token

class AddressListGenericAPIView(GenericAPIView,ListModelMixin):queryset = UserAddress.objectsserializer_class = AddressSerializerauthentication_classes = [JwtQueryParamAuthentication, ]def get(self, request):# 拿到token验证返回的第一个值print(request.user)# 拿到token返回的第二个值print(request.auth)# 加该逻辑即进行验证if not request.user.get("status"):return JsonResponse(request.user, safe=False)return self.list(request)

DRF-JWT 头信息传递的token验证
utils/jwt_auth.py

class JwtHeaderAuthentication(BaseAuthentication):def authenticate(self, request):# 从头信息中拿到tokentoken = request.META.get("HTTP_TOKEN")print(token)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

DRF-JWT-Token 的全局配置

settings


# 全局的token验证配置
REST_FRAMEWORK = {"DEFAULT_AUTHENTICATION_CLASSES":['utils.jwt_auth.JwtQueryParamAuthentication']
}

测试
只需要加这两行代码就行
在这里插入图片描述
在这里插入图片描述

不加的不影响
在这里插入图片描述

http://www.yayakq.cn/news/505146/

相关文章:

  • 南昌优化网站推广在线音乐网站开发摘要
  • 中国内销做哪个网站免费商城自助建站
  • 天津网站经营性备案永安市住房与城乡建设局网站
  • 建构网站西安网站建设需要的硬件
  • 做网站 成都白羊影院
  • 义乌公司网站制作深圳手工活外发加工网
  • 张家港网站设计制作早晨设计哈尔滨php网站开发公司
  • 专业网站制作公司四川毕业设计开发网站要怎么做
  • 网站镜像上传到域名空间我做网站了 圆通
  • 俄语培训网站建设河北石家庄有什么好玩的地方
  • 会qt怎么做网站创意营销策划案例
  • 林州网站建设哪家好珠海网站建设制作哪家专业
  • 白城网站建设公司光明区建设局网站
  • 网站建设和考核工作通知asp网站背景
  • 北京建设行政主管部门官方网站平面设计师证报名入口
  • 档案网站建设规范有哪些郑州网站建设那家好
  • 网站建设工作室怎么接单排名优化哪家好
  • 食品行业做网站网络公司经营范围哪些
  • 江苏省和住房城乡建设厅网站赶集网网站建设ppt模板
  • 酒店网站规划建设方案书西安网站关键词推广
  • 服务专业的公司网站设计积分商城小程序
  • 网站开发类的合同范本免费个人网页制作成品
  • 科技:开局研发六代战机许禾网站优化报表
  • 网站建设与实践企业营销培训
  • qq官方网站桂林网站设计公司
  • app网站建设需要什么软件wordpress本地转服务器
  • 做网站起名字怎么做公众号网站
  • 中国建设银行网站怎么做网上销售
  • 乔拓云建站平台外贸网站推广 上海
  • 大淘客联盟做网站营销推广是什么