django的权限认证:登录和退出。auth模块和@login_required装饰器
在settings.py中配置LOGIN_URL参数:
# 用户访问带有(@login_required)标签的页面(view)时,如果没有登录,就会跳转到LOGIN_URL(即登陆url)。 LOGIN_URL = '/login/'
使用django自带的auth模块进行登录和退出:
from django.contrib.auth.models import User
from django.contrib import auth
from django.http.response import HttpResponseRedirectBasefrom django.shortcuts import resolve_url
# 重新重定向,修改状态码,由302(临时重定向)->401(未授权),方便前端fetch捕获class HttpResponseRedirect401(HttpResponseRedirectBase): status_code = 401def redirect401(to, *args, **kwargs): redirect_class = HttpResponseRedirect401return redirect_class(resolve_url(to, *args, **kwargs))
def login(request): # 统一登录的token解析,只要可以解析,就证明登录成功 token = request.GET.get('token', 'default')if token != 'default':user_info = decrypt_by_default_public_key(token)# if user_info:user_name = user_info.get('userName')user_email = user_info.get('loginId')# 返回的时间:51050年# time = user_info.get('time')# year 51050 is out of range# print(datetime.datetime.fromtimestamp(time))if User.objects.filter(username=user_name):passelse:# 必须有password字段,随便给一个密码;使用create_user,会对密码hash,不可以使用create函数User.objects.create_user(username=user_name, password='test', email=user_email)user = auth.authenticate(username=user_name, password='test')auth.login(request, user)request.session['user'] = user_name# 登录之后重定向到欢迎界面,无法重定向到用户原本请求的页面,因为前端请求的url和代理后到后端的url不一致。return redirect("/")else:# return redirect401(JANUS_LOGIN)_next = request.GET.get('next', 'default')if _next != 'default':return redirect401(JANUS_LOGIN)return redirect(JANUS_LOGIN)def logout(request):auth.logout(request) # 重定向到统一退出地址return redirect(JANUS_LOGOUT)
使用login_required校验用户是否登录
from django.contrib.auth.decorators import login_required
from django.views.decorators.csrf import csrf_exempt
logger = logging.getLogger(conf.get('log', 'name'))@login_required # 添加csrf例外;支持post、get、delete、put、patch等方法 @csrf_exempt def hello(request):content = {'hello': 'hello world'}# return HttpResponse("hello world")logger.error('test')logger.error('访问hello界面:error')logger.debug('访问hello界面:debug')logger.info('访问hello界面:info')logger.warning('访问hello界面:warning')logger.critical('访问hello界面:critical')logger.log(40, '测试')logger.exception('ceshi')return render(request, 'hello.html', content)
参考:
https://www.cnblogs.com/xuchengcheng1215/p/9457950.html
https://www.cnblogs.com/tangpg/p/9074418.html
https://www.cnblogs.com/xuchengcheng1215/p/9457950.html
转载于:https://www.cnblogs.com/shengulong/p/10354318.html
django的权限认证:登录和退出。auth模块和@login_required装饰器相关推荐
- Django对接第三方认证登录平台(QQ登录)
QQ登录开发文档 QQ互联开发者申请步骤 若想实现QQ登录,需要成为QQ互联的开发者,审核通过才可实现. 相关链接: http://wiki.connect.qq.com/%E6%88%90%E4%B ...
- python用户登录(输入用户名和密码)dic_Python使用装饰器模拟用户登陆验证功能示例...
本文实例讲述了Python使用装饰器模拟用户登陆验证功能.分享给大家供大家参考,具体如下: # -*- coding:utf-8 -*- #!python3 user_list = [ {'name' ...
- fastapi 用户权限,登录,退出登录组件
将在前面的话 fastapi默认的组件,官网上其实也有,关于权限什么的,在这里 FastAPI 安全性简介 但是我在学习过程中,发现他官方提供的默认组件,有以下缺陷(当然这些是我个人的一些看法,可能我 ...
- auth模块进行验证登录,forms进行输入和后台进行渲染,novalidate前台不验证
auth 模块封装了session 通过user表进行验证 可自定义表 from django.contrib.auth.models import User 1.创建普通用户 User.obje ...
- django使用auth模块进行身份认证
https://docs.djangoproject.com/zh-hans/2.0/topics/auth/default/#authentication-in-web-requests djang ...
- Django (auth模块、User对象、用户认证、线上-用户认证)
一.auth模块 django.contrib.auth中提供了许多方法,这里主要介绍其中的三个: authenticate() 提供了用户认证,即验证用户名以及密码是否正确,一般需要usern ...
- hikaridatasource 加密后登陆不上_python测试开发django42.auth模块登陆认证
前言 在开发一个网站时,经常会用到用户的注册和登陆相关的账号管理功能,auth模块是Django提供的标准权限管理系统,可以提供用户身份认证, 用户组和权限管理. 像用户注册.用户登录.用户认证.注销 ...
- kong笔记——kong的权限认证插件选择参考
kong笔记--目录导航 kong自身共提供了这么几个权限认证插件: basic auth; key auth; hmac auth; jwt auth; oauth2 auth 接下来来逐个介绍其特 ...
- django 使用系统自带登录装饰器login_required
限制用户没有登录就不能访问,就是用这个装饰器,当用户点击用户视图的时候,装饰器会先跳转到登录页面,在url后面增加一个next字段,等到用户登录成功之后,在跳转到先前用户访问的页面 from djan ...
最新文章
- 关于目标检测你必须知道的……
- 如何使wordpress导航栏在新窗口打开
- Excel打开csv文件显示乱码问题解决方法
- leetcode614. 二级关注者(SQL)
- 基于PCA和SVM的人脸识别
- opencv threshold_OpenCV-Python 立体图像的深度图 | 五十二
- 多个cpu+linux,linux查看多个cpu信息
- 《穷爸爸,富爸爸》读书笔记
- Android NFC技术解析,附Demo源码
- 【线性代数】1.6矩阵的特征值和特征向量
- 刘宇凡:我眼中的SEO思维
- 年前刷完了这份足足485页的“1000道Java工程师面经”,成功上岸!
- Linux系统查看服务器版本方法
- 90后歌单精选100首,我有歌,你有故事吗?
- 为何电脑下载mp3等音乐导入U盘后无法在汽车上播放?网易云等音乐软件夹带私货!!
- 中国历史上哪个朝代不能缺?
- linux下防DDOS攻击软件及使用方法详解
- 企业即时通讯软件FreeEIM飞鸽传书
- 酷客多小程序百城宣讲会-洛阳站圆满结束
- [激光器原理与应用-12]: 2022年中国激光行业总体市场规模及发展趋势预测分析