framework —— auth认证

framework —— auth认证

1.目录结构

  

2.urls.py

from django.conf.urls import url
from django.contrib import admin
from app02 import views as app02_view

urlpatterns = [
    url(r‘^admin/‘, admin.site.urls),
    url(r‘^hosts/‘,app02_view.HostView.as_view()),
    url(r‘^auth/$‘,app02_view.AuthView.as_view())
]

3.models.py

from django.db import models

# Create your models here.

class Userinfo(models.Model):
    username = models.CharField(max_length=32)
    password = models.CharField(max_length=64)

    token = models.CharField(max_length=64,null=True)

4.views.py

from django.shortcuts import render,HttpResponse
from rest_framework.views import  APIView
from rest_framework.request import Request
from rest_framework.exceptions import APIException
from rest_framework.response import Response
import time
import hashlib
# Create your views here.

from app02 import models

# class MyAuthentication(object):
#     def authenticate(self,request):
#         token = request.query_params.get(‘token‘)
#         if token == ‘ASSDSA‘:
#             return (‘uuuuuuuuuuu‘,‘aaaaaaaaaaa‘)
#         raise  APIException(‘认证失败‘)

class AuthView(APIView):
    authentication_classes = []
    def get(self,request):
        ‘‘‘
        接收用户名和密码
        :param request:
        :return:
        ‘‘‘
        ret ={"code":1000,"msg":None}
        user = request.query_params.get(‘user‘)
        pwd = request.query_params.get(‘pwd‘)
        user_obj = models.Userinfo.objects.filter(username=user,password=pwd).first()
        if not user_obj:
            ret[‘code‘] = 1001
            ret[‘msg‘] = "用户名或密码错误"
            return  Response(ret)

        #创建随机字符串
        ctime = time.time()
        key = "%s|%s"%(user,pwd)
        m = hashlib.md5()
        m.update(key.encode(‘utf-8‘))
        token = m.hexdigest()
        #保存到数据
        user_obj.token = token
        user_obj.save()

        ret[‘token‘] = token
        return Response(ret)

class HostView(APIView):

    def get(self,request,*args,**kwargs):

        self.dispatch
        print(request.user)
        print(request.auth)
        return Response(‘主机列表‘)

5.utils.py

from django.shortcuts import render,HttpResponse
from rest_framework.views import  APIView
from rest_framework.request import Request
from rest_framework.exceptions import APIException
from rest_framework.response import Response
from app02 import models

class MyAuthentication(object):
    def authenticate(self,request):
        token = request.query_params.get(‘token‘)
        obj = models.Userinfo.objects.filter(token=token).first()
        if obj:
            return obj(obj.username,obj)
        raise  APIException(‘用户认证认证失败‘)

6.settings.py

RESTFRAMEWORK  = {
    ‘UNAUTHENTICATED_USER‘:None,
    ‘UNAUTHENTICATED_TOKEN‘:None,
    "DEFAULT_AUTHENTICATION_CLASSES":[
        "app02.utils.MyAuthentication",
    ]
}

原文地址:https://www.cnblogs.com/zhongbokun/p/8419021.html

时间: 2024-10-08 02:13:04

framework —— auth认证的相关文章

源码剖析Django REST framework的认证方式及自定义认证

源码剖析Django REST framework的认证方式 由Django的CBV模式流程,可以知道在url匹配完成后,会执行自定义的类中的as_view方法. 如果自定义的类中没有定义as_view方法,根据面向对象中类的继承可以知道,则会执行其父类View中的as_view方法 在Django的View的as_view方法中,又会调用dispatch方法. 现在来看看Django restframework的认证流程 Django restframework是基于Django的框架,所以基

ios开发使用Basic Auth 认证方式

我们app的开发通常有2种认证方式   一种是Basic Auth,一种是OAuth:现在普遍还是使用OAuth的多,而使用Basic Auth认证的少,正好呢我今天给大家介绍的就是使用的比较少的Badic Auth认证方式,这种认证方式开发和调试简单, 没有复杂的页面跳转逻辑和交互过程,更利于发起方控制.然而缺点就是安全性更低,不过也没事,我们可以使用https安全加密协议,这样才更安全. 我使用的是AFNetworking发送的网络请求,因此我们用Basic Auth认证方式就不能再使用AF

Bootstrap+Thinkphp3.2+Auth认证+jquery-validator后台

原文:Bootstrap+Thinkphp3.2+Auth认证+jquery-validator后台 Auth权限认证 本例采用auth权限认证,用户和用户组采用多对多关系处理,自动添加rule规则,带有jquery-validator插件,自动控制菜单显示或隐藏.   config.php中的配置 'AUTH_CONFIG'=>array( 'AUTH_ON' => true, //认证开关 'AUTH_TYPE' => 1, // 认证方式,1为时时认证:2为登录认证. 'AUTH_

thinphp中auth认证方法使用

一.获取Auth类1.ThinkPHP3.1.3完整版:http://www.thinkphp.cn/down/338.html2.OneThink1.0正式版:https://github.com/liu21st/onethink 二.建立需要的数据表打开Auth.class.php,将其中有关数据库的注释部分复制后,到phpmyadmin中执行,可得到三个表:think_auth_rule.think_auth_group.think_auth_group_access,并按实际情况修改前缀

java 发送带Basic Auth认证的http post请求

构造http header private static final String URL = "url"; private static final String APP_KEY = "key"; private static final String SECRET_KEY = "secret"; /** * 构造Basic Auth认证头信息 * * @return */ private String getHeader() { String

thinkphp Auth认证类 比RBAC更好的权限认证方式(Auth类认证)

thinkphp Auth认证类 比RBAC更好的权限认证方式(Auth类认证) Auth 类已经在ThinkPHP代码仓库中存在很久了,但是因为一直没有出过它的教程, 很少人知道它, 它其实比RBAC更方便 . RBAC是按节点进行认证的,如果要控制比节点更细的权限就有点困难了,比如页面上面的操作按钮, 我想判断用户权限来显示这个按钮, 如果没有权限就不会显示这个按钮: 再比如我想按积分进行权限认证, 积分在0-100时能干什么, 在101-200时能干什么. 这些权限认证用RABC都很困难.

Django之中间件及Auth认证模块

CBV加装饰器 # 写一个装饰器验证session def login_auth(func): def inner(request,*args,**kwargs): if request.session.get('is_login'): return func(request,*args,**kwargs) else: return redirect('/login/') return inner # 写一个类作为网站主页,必须登陆才能访问 # 给里面的get,post方法加装饰器 class

Python Django 生命周期 中间键 csrf跨站请求伪造 auth认证模块 settings功能插拔式源码

一 django 生命周期 二 django中间键 1.什么是中间键 官方的说法:中间件是一个用来处理Django的请求和响应的框架级别的钩子.它是一个轻量.低级别的插件系统,用于在全局范围内改变Django的输入和输出.每个中间件组件都负责做一些特定的功能. 简单来说就相当于django门户,保安:它本质上就是一个自定义类,类中定义了几个方法. 请求的时候需要先经过中间件才能到达django后端(urls,views,templates,models): 响应走的时候也需要经过中间件才能到达w

Django框架之 auth认证模块

目录 一.Auth模块是什么 二.Auth模块的使用 2.1 User对象的属性 三.扩展auth_user表的字段 3.1 通过AbstractUser类来进行扩展 再次注意: 一.Auth模块是什么 Auth模块是Django自带的用户认证模块: 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的事情呢. Django作为一个完美主义者的终极框架,当然也会想到用户的这些痛点.它内置了强大的用