Django基础教程(四十九)Django用户认证和鉴权:靠!Django自带的用户认证系统,居然能这么玩?

还在手写用户登录注册?别闹了,Django自带的那套认证机制,香到让你想哭!

作为一个(自认为)成熟的Web开发者,我曾经在用户认证这个坑里躺平了无数次。每次新项目开工,都要重新写一遍用户登录、注册、密码重置的代码,写得我怀疑人生——这玩意儿就不能一次写好,终身受用吗?

直到我遇见了Django的Auth模块,好家伙,原来大佬早就帮我们把路铺好了!今天,就让我带你深度扒一扒Django的用户认证系统,保准让你直呼“真香”!

01 先别急着写代码,理解Django的认证哲学

Django的设计者绝对是贴心小棉袄。他们知道,几乎每个Web应用都需要用户系统,所以干脆把这一整套东西都打包好了,美其名曰“认证框架”。

这个框架主要解决三个灵魂问题:

  • 你是谁?(认证 Authentication)
  • 你能干啥?(权限 Permissions)
  • 你是不是还在?(会话 Session)

Django用一个统一的django.contrib.auth模块,把这些功能全都承包了。咱们要做的,就是理解它、爱上它、然后用好它。

02 扒开Django的认证工具箱,看看里面都有啥宝贝

User模型:你的数字身份证

每个来你网站的人,在Django眼里都是一个User对象。这哥们儿自带了这些基本信息:

from django.contrib.auth.models import User

# 看看User模型都有啥字段
user = User.objects.get(username='老王')
print(user.username)  # 用户名
print(user.email)     # 邮箱
print(user.first_name) # 名
print(user.last_name)  # 姓
print(user.password)   # 加密后的密码(注意:不是明文!)
print(user.is_staff)   # 是不是管理员
print(user.is_active)  # 账号是否激活
print(user.is_superuser) # 是不是超级用户

最妙的是,Django在背后默默做了很多安全措施。比如密码从来不以明文存储,而是用PBKDF2算法加密,想破解?门都没有!

Group和Permission:你的权限管理系统

想象一下,你的网站有普通用户、VIP用户、管理员……不同的人该有不同的权限。Django用Group(用户组)和Permission(权限)来解决这个问题。

from django.contrib.auth.models import Group, Permission

# 创建用户组
vip_group, created = Group.objects.get_or_create(name='VIP用户')

# 给组分配权限
add_blog_perm = Permission.objects.get(codename='add_blog')
vip_group.permissions.add(add_blog_perm)

# 把用户加入组
user.groups.add(vip_group)

这样,属于VIP组的用户自动就有了发布博客的权限,多优雅!

authenticate()和login():认证界的黄金搭档

这是Django认证流程的核心CP:

from django.contrib.auth import authenticate, login

def my_login_view(request):
    # 验证用户凭据
    user = authenticate(request, username='老王', password='我的密码
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

值引力

持续创作,多谢支持!

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

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

打赏作者

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

抵扣说明:

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

余额充值