Django API 开发:博客系统的权限管理(上)

简介: 安全性是任何网站的重要组成部分,但对于 Web API 而言则至关重要。 目前,我们的 Blog API 允许任何人进行完全访问。 没有任何限制; 任何用户都可以做任何极其危险的事情。 例如,匿名用户可以创建,阅读,更新或删除任何博客文章。 他们甚至没有创造一个! 显然,我们不希望这样做。

引言

安全性是任何网站的重要组成部分,但对于 Web API 而言则至关重要。 目前,我们的 Blog API 允许任何人进行完全访问。 没有任何限制; 任何用户都可以做任何极其危险的事情。 例如,匿名用户可以创建,阅读,更新或删除任何博客文章。 他们甚至没有创造一个! 显然,我们不希望这样做。


Django REST Framework 附带了一些现成的权限设置,我们可以使用这些设置来保护我们的 API。 这些可以应用于项目级别,视图级别或任何单个模型级别。


在本章中,我们将添加一个新用户并尝试多种权限设置。 然后,我们将创建自己的自定义权限,以便只有博客文章的作者才可以更新或删除它。

新增一个用户

首先创建第二个用户。 这样,我们可以在两个用户帐户之间切换以测试我们的权限设置。


浏览至 http://127.0.0.1:8000/admin/ 的管理员。 然后单击“用户”旁边的“ +添加”。


输入新用户的用户名和密码,然后单击“保存”按钮。 我在这里选择了用户名 testuser


下一个屏幕是“管理员用户更改”页面。 我已经将我的用户称为 testuser,在这里我可以添加默认用户模型中包含的其他信息,例如名字,姓氏,电子邮件地址等。但是对于我们而言,这些都不是必需的:我们只需要用户名密码用于检测。


向下滚动到此页面的底部,然后单击“保存”按钮。 它将重定向回位于 http://127.0.0.1:8000/admin/auth/user/ 的主用户页面。


我们可以看到列表中有两个用户。

在 browsable API 增加登录功能

今后,无论何时要在用户帐户之间切换,我们都需要跳到 Django 管理员,退出一个帐户,然后登录另一个帐户。 每次。 然后切换回我们的 API 端点。


这是一种常见的情况,Django REST Framework 具有单行设置以添加登录并直接注销到可浏览的 API 本身。 我们将立即实施。


在项目级别的 urls.py 文件中,添加一个包含 rest_framework.urls的新 URL 路由。 令人困惑的是,指定的实际路线可以是我们想要的任何东西; 重要的是 rest_framework.urls 包含在某处。 我们将使用 api-auth 路由,因为它与官方文档匹配,但我们可以轻松使用任何我们想要的东西,并且所有功能都将保持相同。

# blog_project/urls.py
from django.contrib import admin 
from django.urls import include, path
urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/v1/', include('posts.urls')), 
    path('api-auth/', include('rest_framework.urls')), # new
]


现在,访问 http://127.0.0.1:8000/api/v1/ 上的可浏览 API。 有一个细微的变化:右上角的用户名旁边是一个向下的箭头。



由于此时我们已使用超级用户帐户登录(对我而言是 wsv ),因此将显示该名称。 单击链接,然后显示带有“注销”的下拉菜单。 点击它。


右上角的链接现在更改为“登录”。 因此,请点击该按钮。


我们被重定向到 Django REST Framework 登录页面。 在此处使用您的测试用户帐户。


最后,它将重定向到主 API 页面,在右上角有 testuser。



最后,注销我们的 testuser 帐户。



您应该再次在右上角看到“Log in”链接。

相关文章
|
17天前
|
缓存 监控 前端开发
顺企网 API 开发实战:搜索 / 详情接口从 0 到 1 落地(附 Elasticsearch 优化 + 错误速查)
企业API开发常陷参数、缓存、错误处理三大坑?本指南拆解顺企网双接口全流程,涵盖搜索优化、签名验证、限流应对,附可复用代码与错误速查表,助你2小时高效搞定开发,提升响应速度与稳定性。
|
2月前
|
数据可视化 测试技术 API
从接口性能到稳定性:这些API调试工具,让你的开发过程事半功倍
在软件开发中,接口调试与测试对接口性能、稳定性、准确性及团队协作至关重要。随着开发节奏加快,传统方式已难满足需求,专业API工具成为首选。本文介绍了Apifox、Postman、YApi、SoapUI、JMeter、Swagger等主流工具,对比其功能与适用场景,并推荐Apifox作为集成度高、支持中文、可视化强的一体化解决方案,助力提升API开发与测试效率。
|
2月前
|
人工智能 自然语言处理 机器人
使用 API 编程开发扣子应用
扣子(Coze)应用支持通过 API 编程,将 AI 聊天、内容生成、工作流自动化等功能集成至自有系统。主要 API 包括 Bot API(用于消息交互与会话管理)及插件与知识库 API(扩展功能与数据管理)。开发流程包括创建应用、获取密钥、调用 API 并处理响应,支持 Python 等语言。建议加强错误处理、密钥安全与会话管理,提升集成灵活性与应用扩展性。
686 0
|
24天前
|
API 开发者 数据采集
高效获取淘宝商品详情:API 开发实现链接解析的完整技术方案
2025反向海淘新机遇:依托代购系统,聚焦小众垂直品类,结合Pandabay数据选品,降本增效。系统实现智能翻译、支付风控、物流优化,助力中式养生茶等品类利润翻倍,新手也能快速入局全球市场。
高效获取淘宝商品详情:API 开发实现链接解析的完整技术方案
|
2月前
|
数据采集 缓存 API
小红书笔记详情 API 实战指南:从开发对接、场景落地到收益挖掘(附避坑技巧)
本文详解小红书笔记详情API的开发对接、实战场景与收益模式,涵盖注册避坑、签名生成、数据解析全流程,并分享品牌营销、内容创作、SAAS工具等落地应用,助力开发者高效掘金“种草经济”。
小红书笔记详情 API 实战指南:从开发对接、场景落地到收益挖掘(附避坑技巧)
|
18天前
|
存储 缓存 算法
淘宝买家秀 API 深度开发:多模态内容解析与合规推荐技术拆解
本文详解淘宝买家秀接口(taobao.reviews.get)的合规调用、数据标准化与智能推荐全链路方案。涵盖权限申请、多模态数据清洗、情感分析、混合推荐模型及缓存优化,助力开发者提升审核效率60%、商品转化率增长28%,实现UGC数据高效变现。
|
21天前
|
存储 缓存 算法
亚马逊 SP-API 深度开发:关键字搜索接口的购物意图挖掘与合规竞品分析
本文深度解析亚马逊SP-API关键字搜索接口的合规调用与商业应用,涵盖意图识别、竞品分析、性能优化全链路。通过COSMO算法解析用户购物意图,结合合规技术方案提升关键词转化率,助力卖家实现数据驱动决策,安全高效优化运营。
|
3月前
|
测试技术 API 开发工具
API文档该怎么写,开发效率能翻几倍?
API文档是提升开发效率与协作的关键因素,本文探讨了API文档的核心要素、常见类型及编写规范,并介绍了如何借助现代化工具如Apifox实现高效管理与维护,助力团队打造高质量的API文档体系。
|
3月前
|
算法 前端开发 API
京东比价项目开发实录:京东API接口(2025)
本文分享了作者在电商开发中对接京东商品详情API的实战经验,涵盖了申请权限、签名算法、限流控制、数据解析等常见问题,并提供了亲测有效的Python代码示例,帮助开发者避坑。
|
3月前
|
人工智能 API 定位技术
MCP 开发实战:手把手教你封装高德地图与 arXiv API
本教程为 MCP(Model Context Protocol)开发实战第二阶段,带你从零封装第三方 API 为 AI 模型可用工具。通过高德地图地理编码与 arXiv 论文检索两个实例,涵盖项目搭建、工具声明、资源定义、错误处理等核心内容,助你快速上手 MCP 开发并集成至 Claude 使用。