Django基础教程(117)Django认证和权限之给视图添加必要的权限:别让你的Django视图变成公共厕所!手把手教你用‘权限锁’把门焊死

一、开场白:为什么你的视图需要“看门大爷”?

兄弟们,姐妹们,咱们写个Web应用,最怕啥?怕Bug?怕性能差?不,最怕的是安全漏洞!而你应用里最大的安全漏洞之一,可能就是——没给视图加权限

这啥概念呢?就好比你费尽心思装修了个豪华会所(你的网站),里面有VIP包间(管理后台)、有会员专区(用户中心)。结果你呢,忘了请保安,也没装门禁,大门敞开,谁都能进来溜达。路人甲不仅能在大厅(公开页面)晃悠,还能一脚踹开你VIP包间的门,把你存的好酒(数据库数据)全给喝了。

吓人不?太吓人了!

别怕!Django早就给你准备好了全套“安保系统”,核心就是认证(Authentication)权限(Permission)。今天,咱们不聊虚的,就干一件事:给你那些“娇贵”的视图函数和视图类,穿上权限的铠甲!

二、Django权限系统:你的“安保部门”编制

在请出我们的“看门大爷”(视图装饰器)和“门禁卡”(权限检查)之前,得先了解一下Django这个“公司”的安保部门是怎么编制的。

  1. 认证 (Authentication): 回答“你是谁?” 这个问题。就是检查用户提供的凭证(比如用户名密码)是否正确,确认他的身份。通过认证的用户,Django会给他一个User对象的实例。
  2. 权限 (Permission): 回答“你能干什么?” 这个问题。一个用户认证通过后,不代表他什么都能干。权限就是用来标记一个用户(或用户组)是否能执行某种操作。

Django的权限系统是基于模型的。什么意思?当你用python manage.py makemigrationsmigrate时,Django会自动为你的每个模型创建四种默认权限:add_模型名, change_模型名, delete_模型名, 和 view_模型名

比如,你有个Article模型,Django就会自动生成:

  • blog.add_article (添加文章)
  • blog.change_article (修改文章)
  • blog.delete_article (删除文章)
  • blog.view_article (查看文章)

这些权限就像是一张张“操作许可证”,存放在数据库里。你可以通过Admin后台,给不同的用户或用户组分配这些许可证。

准备工作: 确保你的settings.py里已经启用了Django的认证和权限中间件:

# settings.py
INSTALLED_APPS = [
    # ...
    'django.contrib.auth',      # 核心认证框架
    'django.contrib.contenttypes', # 权限系统依赖它
    # ...
]

MIDDLEWARE = [
    # ...
    'django.contrib.sessions.middleware.SessionMiddleware', # 管理会话
    'django.contrib.auth.middleware.AuthenticationMiddleware', # 关联用户与请求
    # ...
]

好了,安保部门准备就绪,现在该给我们的“房间”(视图)上锁了!

三、实战演练:给你的视图穿上“防弹衣”
1. 第一道锁:@login_required —— “游客止步”

这是最简单、最常用的一把锁。它的要求就一点:是登

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

值引力

持续创作,多谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值