玩儿了一下django User authentication

五一在家,VPN不能链接了,而项目在本地run的过程中,又需要链接公司的SSO server才能login。下雨,不想去公司,又不得不在家做task,只能想办法避开SSO login,以前知道django自带的有login模块,就打算用它暂时替换掉项目本身的login模块,这样就能绕过SSO验证,就不用连接到公司的server了。
我接这个项目的时候,login模块就做好了,一直也没出问题,也没去研究过,趁此机会,学习了一下django的用户验证框架。

以前没怎么做过web,开始正儿八经接触web框架就是springMVC,用户验证这块儿也就配过spring-security,初步认识Auth/Auth模块就是user验证,赋予权限,然后再驱动登录创建session。django的User authentication模块也确实涵盖了这些,不过,它的特点是更简单,更灵活。

django的用户验证模块基于django.contrib.auth,auth.models里面有一个User类,User类继承了AbstractBaseUser和PermissionsMixin两个类,AbstractBaseUser提供User的基本属性和相应的get/set方法比如username,password,email。PermissionsMixin提供usr权限相关的方法,可以验证User的权限,赋予User权限等。

auth的__init__.py里面提供了authenticate, login, logout等方法,用于验证和登录、登出。

django提供了几种用户验证方式:user对象验证,web requests对user对象验证,还有基于装饰器的验证方法@login_required,@user_passes_test,@permission_required。用起来比较简单。

当然,除了default的authentication,django也允许使用自定义的authentication backend, 我一直认为是django框架灵活性的最大体现,作为一个全栈的web框架,django更倾向于自己实现所有的模块,很少直接兼容第三方模块,能自定义backend替换default的,算是django框架的一条通往外界之路。

自定义的authentication backend只要实现两个方法:authenticate和get_user,然后在setting.py的AUTHENTICATION_BACKENDS属性里进行一下声明就可以了,auth模块的__init__.py中有个get_backends的方法,会收集所有声明在AUTHENTICATION_BACKENDS中的所有authentication backend对象,在auth.authenticate方法中遍历执行get_backends对象列表的authenticate方法,只要返回的user为真,就直接return出去。

所以,我在项目中避开SSO login的操作就是把AUTHENTICATION_BACKENDS中django的default user authentication模块(django.contrib.auth.backends.ModelBackend),调整到自定义的authentication backend声明之前,然后在成功验证拿到User对象之后,调用django的login,完成session创建和登录跳转,就OK了。

时间: 2024-09-30 09:49:37

玩儿了一下django User authentication的相关文章

Using the Django authentication system

Using the Django authentication system This document explains(解释) the usage(使用) of Django’s authentication system(用户认证系统) in its default configuration(默认配置). This configuration has evolved to serve the most common project needs, handling a reasonably

django(权限、认证)系统—— 基于Authentication backends定制

在这篇文章中,我们进行最后关于DjangoPermission系统的探讨,来谈谈关于Permission系统后台接口和扩展后台接口的开发. Django实现的这套permission体系,在底层被抽象为authentication backends.Django auth backends的默认的内置的实现,就是我们前4篇blog所描述的,基于三个数据库模型User,Permission,Group.在实际开发中,很有可能我们的用户标示或者是密码并非存在于User表中,比如说存放在LDAP中,再

django_restframework_angularjs

用Django Rest Framework和AngularJS开始你的项目 作者: seele52 发布时间:2015-07-29 11:30:55 用Django Rest Framework和AngularJS开始你的项目 作者:Kevin Stone原帖:Getting Started with Django Rest Framework and AngularJS原帖时间:2013-10-02 译序:虽然本文号称是"hello world式的教程"(这么长的hello wor

django-admin和manage.py

目录 一.Django内置命令选项 check dbshell diffsettings flush makemigrations migrate runserver shell startapp startproject test 二.app提供的命令 changepassword createsuperuser clearsessions collectstatic 三. 共有参数 --pythonpath PYTHONPATH --settings SETTINGS --traceback

Django用户认证系统 authentication system

Django集成了用户登陆/验证/登出的模块,可以直接拿来使用,也可以进行定制,使用起来非常方便. 一,创建Django工程 $ django-admin.py startproject mysite 工程目录结构如下 [email protected]:~/Study/django$ tree mysite/ mysite/ ├── manage.py └── mysite ├── __init__.py ├── settings.py ├── urls.py └── wsgi.py 1 di

Django自定义用户认证系统Customizing authentication

扩展已有的用户模型Extending the existing User model 有两种方法来扩展默认的User Model而不用重写自己的模型.如果你不需要改变存储在数据库中的字段,而只是需要改变Model的行为,您可以创建一个基于User的代理Model.允许的行为包括默认的ordering,custom managers, 或者 custom model methods. 如果你想存储与User有关的信息,可以使用一个OneToOneField字段关联到一个存储额外信息的Model.这

User authentication in Django(用户认证)

一,概述: auth 系统包括: 1)Users 2)Permissions: Binary (yes/no) flags designating whether a user may perform a certain task.(权限:二进制(是/否)标志,指示用户是否可以执行某个任务.) 3)Groups: A generic way of applying labels and permissions to more than one user.(组:向多个用户应用标签和权限的通用方法.

Django使用自定义的authentication登录认证

import ldap class LDAPMgmt(): def __init__(self): self.ldap_host = 'xxx' self.ldap_base_dn = 'ou=xx,dc=xx,dc=xx,dc=xx' self.root_cn = 'cn=xx,dc=xx,dc=xx' self.root_pw = 'xx' self.conn = ldap.initialize(self.ldap_host) self.conn.set_option(ldap.OPT_RE

Django Authentication 用户认证系统

一. Django的认证系统 Django自带一个用户认证系统,用于处理用户账户.群组.许可和基于cookie的用户会话. 1.1 概览 Django的认证系统包含了身份验证和权限管理两部分.简单地说,身份验证用于核实某个用户是否是合法用户,权限管理则是决定一个合法用户具有哪些权限.这里,"身份验证"这个词同时代指上面两部分的含义. 系统主要包括: 用户 许可 组 可配置的密码哈希系统 用于用户登录或者限制访问的表单和视图工具 可插拔的后端 类似下面的问题,请使用第三方包: 密码强度检