auth组件,扩展auth_user表,自定义中间表(中介模型)

本文介绍了Django的auth组件,详细讲解了如何扩展默认的auth_user表以及自定义中间表(中介模型)。内容涵盖authenticate用户认证、login、logout、is_authenticated等内置方法的使用,同时探讨了在项目后期如何扩展已有的auth_user表。
摘要由CSDN通过智能技术生成

一.上节回顾

# 0 中间件:概念很大,介于某两个东西之间
	-服务器中间件
	-数据库中间件
	-消息队列中间件
#1 django中间件(全局请求和响应的处理)
	-写一个类,继承一个类,把类配置在setting中,先后顺序
	-process_request:所有请求来了,都会走它(尽量加判断),如果返回HttpResponse对象,不再继续往下走
	-process_response:所有请求走,都会经过它,加入响应头,设置cookie,session
	-process_view:process_request和路由匹配成功,视图函数执行之前
	-process_exception:视图函数出异常,会执行它

# csrf:跨站请求伪造(浏览器的漏洞)
-方案:每次发请求,都携带一个服务端给我的随机字符串(放在头,放在体中)
-django处理csrf攻击,放在头或者数据中都可以,这个随机字符串是后端给的(cookie中取,页面中隐藏的,标签渲染上的)
-csrf全局使用,局部禁用
-csrf全局禁用,局部使用
-cbv加装饰器

二.今日内容

1.auth组件介绍

1 我们需要实现包括用户注册,用户登录,用户认证,注销,修改密码等功能,内置了强大的用户认证系统--auth,是一个app

2.内置属性 方法

数据迁移以后使用

authenticate用户认证

from django.contrib import auth
def login(request):
	if request.method == 'GET':
		return render(request,'login.html')
	else:
		name=request.POST.get('name')
		password=request.POST.get('password')  # 明文
		## 方案行不通,密码是密文的,永远匹配不成功
		# user=User.objects.filter(username=name,password=password)
		## 使用此方案
		## 第一个参数必须是request对象
		## username和password
		user=auth.authenticate(request,username=name,password=password)
		if user:
			return HttpResponse('登录成功')
		else:
			return HttpResponse('用户名或密码错误')

login

# 表示用户登录了
# 1 存了session
# 2 以后所有的视图函数,都可以使用request.user,它就是当前登录用户
auth.login(request,user)

logout

def logout(request):
	# 后续再访问视图函数,就没有当前登录用户了request.user(匿名用户AnonymousUser)
	auth.logout(request)
	return redirect('/index/')

is_authenticated

# is_authenticated 返回True或者False,判断用户是否登录
# 用在视图中
if request.user.is_authenticated:
	print(
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值