首页
学习
活动
专区
圈层
工具
发布

如何让 Python 写的 API 接口同时支持 Session 和 Token 认证?

一种是在 Django 的配置文件中通过 REST_FRAMEWORK变量全局设置认证模式,例如: REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES...同时,在 Web 页面进行接口请求的时候,需要在 headers 头里面带上X-CSRFToken参数,其值为 Django 的 csrf_token,例如: headers: {"X-CSRFToken...":'{{ csrf_token }}'}, 多认证方式接口示例 在「觅道文档」中,我们就采用了这样的双认证方式来处理接口的认证。...Token 的情况下访问接口,会直接响应 403 Forbidden: ?...如果浏览器未登录状态下访问接口,会直接响应 403 Forbidden: ? 如果我们在浏览器登录状态下访问接口,会响应成功: ? 如果我们在接口中携带 Token 参数,也会响应成功: ?

3.2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【玩转全栈】—— Django 连接 vue3 保姆级教程,前后端分离式项目2025年4月最新!!!

    具体工作流程如下: 生成Token:当用户访问一个包含表单的页面时,Django会在响应中设置一个名为csrftoken的Cookie,并且在HTML表单中插入一个隐藏字段,其值为相同的CSRF Token...只有当两者匹配时,才会处理该请求;否则,请求将被拒绝并返回403 Forbidden错误。...安全性保障:这种方法有效地阻止了第三方网站直接构造请求并利用已登录用户的会话信息执行未授权操作的可能性,因为它们无法获取到正确的CSRF Token。...如果前端未正确获取或发送 CSRF Token,就会触发以下错误: CSRF verification failed. Request aborted. CSRF cookie not set....解决方案 Django 获取 CSRF Token Django 提供了一个专门的视图 /csrf/ ,可以用来手动获取 CSRF Token。

    2.1K10

    Django教程(二)- Django视图与网址进阶1. HTML表单2.CSRF3.代码操作

    表单使用表单标签 来设置: input elements HTML 表单 - 输入元素 多数情况下被用到的表单标签是输入标签()。...Django 提供的 CSRF 防护机制 django 第一次响应来自某个客户端的请求时,会在服务器端随机生成一个 token,把这个 token 放在 cookie 里。...如果一样,则表明这是一个合法的请求,否则,这个请求可能是来自于别人的 csrf 攻击,返回 403 Forbidden....要启用 django.middleware.csrf.CsrfViewMiddleware 这个中间件 再次,在所有的 POST 表单元素时,需要加上一个 {% csrf_token %} tag 在渲染模块时...233 注意:测试之前需在终端打开服务器python manage.py runserver 8001(端口号默认是8000,也可以选择不设置!)

    5.2K40

    Django+Vue项目学习第五篇:vue+django发送post请求,解决csrf认证问题

    ', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware',...', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] 解决django-csrf认证-方法2 网上的资料繁杂,很多博主给的解决方式都已经失效...X-CSRFToken为空; 网上有人说,可以把后台生成的csrftoken直接赋给请求头中的 X-CSRFToken,我试了一下并不行,还是会提示403Forbidden; 所以通过csrf认证的真正方式是...,也就是csrftoken 可以自己试一下,如果把这个cookie删掉,发post请求就会报 403Forbidden 如果按照上述配置好的话,每次触发这个请求时,都会在这里自动生成一个cookie...,猜测是Django自动发给客户端的 然后客户端需要携带这个cookie才能提高django的csrf验证 当然,如果不按照上述配置,例如 没有配置 axios.defaults.withCredentials

    4.5K30

    Django-中间件-csrf扩展请求伪造拦截中间件-Django Auth模块使用-效仿 django 中间件配置实现功能插拔式效果-09

    csrf 中间件 跨站请求伪造 post请求提交数据通过 csrf 校验 form 表单 ajax 发送 csrf 装饰器相关 未注释掉 csrf 中间件时 单功能取消 csrf 校验:csrf_exempt...如何区分当前用户朝我们网站发送的请求页面是不是我们本网站给的 防止思路 网站会给返回给用户的 form 表单页面 偷偷塞一个随机字符串 请求到来的时候,会先比对随机字符串是否一致,如果不一致,直接拒绝(403 FORBIDDEN...%} 或在 ajax 中写 {{ csrf_token }} 了 csrf 装饰器相关 其他中间件也可以效仿下面的方法来校验或者取消校验 两个问题 当你网站全局都需要校验 csrf 的时候(未注释掉...@csrf_protect 未注释掉 csrf 中间件时 单功能取消 csrf 校验:csrf_exempt FBV from django.views.decorators.csrf import...import login_required # @login_required # 自动校验当前用户是否登录,如果没有登录,(未传参数的情况下)默认跳转到 django 自带的登录页面(还是 404

    1.7K50

    Django中间件自定义开发指南:从原理到实战的深度解析

    基础结构搭建Django中间件本质是一个Python类,推荐继承django.utils.deprecation.MiddlewareMixin(Django 2.0+兼容写法)。...return redirect('/forbidden/')(3)异常处理:process_exception 捕获视图函数抛出的异常,可用于统一错误处理或日志记录。...性能优化技巧避免数据库查询:在__init__中不要执行数据库操作使用缓存:对频繁访问的数据使用django.core.cache异步处理:耗时操作(如日志记录)改用Celery禁用冗余方法:未使用的方法可直接...等安全防护:from django.middleware.csrf import CsrfViewMiddlewarefrom django.utils.http import is_same_origin...csrf_middleware = CsrfViewMiddleware(lambda req: response) return csrf_middleware.process_response

    44110

    软件安全性测试(连载6)

    与跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。 1. CSRF注入介绍 下面是一个典型的CSRF注入。...CSRF注入分类及攻击方法 CSRF注入可以分为GET注入和POST注入。 1)GET注入 在CSRF注入介绍介绍的就是GET注入,再看下面一个例子。...下面介绍下Django中的django.middleware.csrf.CsrfViewMiddleware的工作原理。...服务器进行验证名为csrfmiddletoken hidden中的内容与名为csrftoken的cookie内容是否相同,如果相同,返回200(OK)响应码,然后进入/login_action/,否则返回403(Forbidden...14 CSRF Token在前后端分离中的解决方案 2)其他方法 但是这个方法是防君子不防小人的,有经验的工程师可以构造接口测试代码,将cooiles的值与hidden中的值设置为一样的,然后提交,可以通过假

    83020
    领券