在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装饰器相关推荐

  1. Django对接第三方认证登录平台(QQ登录)

    QQ登录开发文档 QQ互联开发者申请步骤 若想实现QQ登录,需要成为QQ互联的开发者,审核通过才可实现. 相关链接: http://wiki.connect.qq.com/%E6%88%90%E4%B ...

  2. python用户登录(输入用户名和密码)dic_Python使用装饰器模拟用户登陆验证功能示例...

    本文实例讲述了Python使用装饰器模拟用户登陆验证功能.分享给大家供大家参考,具体如下: # -*- coding:utf-8 -*- #!python3 user_list = [ {'name' ...

  3. fastapi 用户权限,登录,退出登录组件

    将在前面的话 fastapi默认的组件,官网上其实也有,关于权限什么的,在这里 FastAPI 安全性简介 但是我在学习过程中,发现他官方提供的默认组件,有以下缺陷(当然这些是我个人的一些看法,可能我 ...

  4. auth模块进行验证登录,forms进行输入和后台进行渲染,novalidate前台不验证

    auth 模块封装了session  通过user表进行验证  可自定义表 from django.contrib.auth.models import User 1.创建普通用户 User.obje ...

  5. django使用auth模块进行身份认证

    https://docs.djangoproject.com/zh-hans/2.0/topics/auth/default/#authentication-in-web-requests djang ...

  6. Django (auth模块、User对象、用户认证、线上-用户认证)

    一.auth模块 django.contrib.auth中提供了许多方法,这里主要介绍其中的三个: authenticate()    提供了用户认证,即验证用户名以及密码是否正确,一般需要usern ...

  7. hikaridatasource 加密后登陆不上_python测试开发django42.auth模块登陆认证

    前言 在开发一个网站时,经常会用到用户的注册和登陆相关的账号管理功能,auth模块是Django提供的标准权限管理系统,可以提供用户身份认证, 用户组和权限管理. 像用户注册.用户登录.用户认证.注销 ...

  8. kong笔记——kong的权限认证插件选择参考

    kong笔记--目录导航 kong自身共提供了这么几个权限认证插件: basic auth; key auth; hmac auth; jwt auth; oauth2 auth 接下来来逐个介绍其特 ...

  9. django 使用系统自带登录装饰器login_required

    限制用户没有登录就不能访问,就是用这个装饰器,当用户点击用户视图的时候,装饰器会先跳转到登录页面,在url后面增加一个next字段,等到用户登录成功之后,在跳转到先前用户访问的页面 from djan ...

最新文章

  1. 关于目标检测你必须知道的……
  2. 如何使wordpress导航栏在新窗口打开
  3. Excel打开csv文件显示乱码问题解决方法
  4. leetcode614. 二级关注者(SQL)
  5. 基于PCA和SVM的人脸识别
  6. opencv threshold_OpenCV-Python 立体图像的深度图 | 五十二
  7. 多个cpu+linux,linux查看多个cpu信息
  8. 《穷爸爸,富爸爸》读书笔记
  9. Android NFC技术解析,附Demo源码
  10. 【线性代数】1.6矩阵的特征值和特征向量
  11. 刘宇凡:我眼中的SEO思维
  12. 年前刷完了这份足足485页的“1000道Java工程师面经”,成功上岸!
  13. Linux系统查看服务器版本方法
  14. 90后歌单精选100首,我有歌,你有故事吗?
  15. 为何电脑下载mp3等音乐导入U盘后无法在汽车上播放?网易云等音乐软件夹带私货!!
  16. 中国历史上哪个朝代不能缺?
  17. linux下防DDOS攻击软件及使用方法详解
  18. 企业即时通讯软件FreeEIM飞鸽传书
  19. 酷客多小程序百城宣讲会-洛阳站圆满结束
  20. [激光器原理与应用-12]: 2022年中国激光行业总体市场规模及发展趋势预测分析

热门文章

  1. java面试题六 float变量合法声明
  2. vue3.0js 非prop属性的值和setup函数的使用
  3. python软件开发目录_软件开发目录规范
  4. Elasticsearch教程elasticsearch Client创建
  5. TensorFlow学习笔记(二十) tensorflow实现简单三层网络
  6. python学习笔记(六)循环、迭代
  7. 软件设计原则(六)迪米特法则 -Law of Demeter
  8. Go tcp客户端、服务端编程
  9. Youtube深度学习推荐系统
  10. Intellij IDEA集成JProfiler性能分析神器