• djoser


    User authentication in Django

    https://docs.djangoproject.com/en/3.2/topics/auth/

    django带有一个用户认证系统,能够处理 用户账户、组、许可、基于cookie的用户会话。

    Django comes with a user authentication system. It handles user accounts, groups, permissions and cookie-based user sessions. This section of the documentation explains how the default implementation works out of the box, as well as how to extend and customize it to suit your project’s needs.

    认证系统处理 认证 和 授权。

    The Django authentication system handles both authentication and authorization. Briefly, authentication verifies a user is who they claim to be, and authorization determines what an authenticated user is allowed to do. Here the term authentication is used to refer to both tasks.

    The auth system consists of:

    • Users
    • Permissions: Binary (yes/no) flags designating whether a user may perform a certain task.
    • Groups: A generic way of applying labels and permissions to more than one user.
    • A configurable password hashing system
    • Forms and view tools for logging in users, or restricting content
    • A pluggable backend system

    认证接口

    https://docs.djangoproject.com/en/3.2/topics/auth/default/#authenticating-users

    仅仅验证 用户名和密码 的合法性

    from django.contrib.auth import authenticate
    user = authenticate(username='john', password='secret')
    if user is not None:
        # A backend authenticated the credentials
    else:
        # No backend authenticated the credentials

    登录接口

    https://docs.djangoproject.com/en/3.2/topics/auth/default/#how-to-log-a-user-in

    登录接口,将用户记入session

    from django.contrib.auth import authenticate, login
    
    def my_view(request):
        username = request.POST['username']
        password = request.POST['password']
        user = authenticate(request, username=username, password=password)
        if user is not None:
            login(request, user)
            # Redirect to a success page.
            ...
        else:
            # Return an 'invalid login' error message.
            ...

    登出接口

    https://docs.djangoproject.com/en/3.2/topics/auth/default/#how-to-log-a-user-out

    从session中销毁

    from django.contrib.auth import logout
    
    def logout_view(request):
        logout(request)
        # Redirect to a success page.

    djoser

    https://djoser.readthedocs.io/en/latest/introduction.html

    django 提供的认证系统, 从函数层面提供接口,对于HTTP接口,还需要用户去封装。

    对于普遍情况,登录逻辑是一致的, 所以djoser库直接提供了 restful HTTP接口。

    REST implementation of Django authentication system. djoser library provides a set of Django Rest Framework views to handle basic actions such as registration, login, logout, password reset and account activation. It works with custom user model.

    Instead of reusing Django code (e.g. PasswordResetForm), we reimplemented few things to fit better into Single Page App architecture.

    Developed by SUNSCRAPERS with passion & patience.

    Supported API

    https://djoser.readthedocs.io/en/latest/getting_started.html

    此库基于DRF.

    Available endpoints

    • /users/
    • /users/me/
    • /users/confirm/
    • /users/resend_activation/
    • /users/set_password/
    • /users/reset_password/
    • /users/reset_password_confirm/
    • /users/set_username/
    • /users/reset_username/
    • /users/reset_username_confirm/
    • /token/login/ (Token Based Authentication)
    • /token/logout/ (Token Based Authentication)
    • /jwt/create/ (JSON Web Token Authentication)
    • /jwt/refresh/ (JSON Web Token Authentication)
    • /jwt/verify/ (JSON Web Token Authentication)

    djoser tutorial

    https://saasitive.com/tutorial/token-based-authentication-django-rest-framework-djoser/#

    • /users/ - to signup a new user,
    • /users/me/ - to get user information,
    • /token/login/ - to get token,
    • /token/logout/ - to logout.

    创建用户

    It is expected because we don’t have any endpoint at /. Please go to http://127.0.0.1:8000/api/v1/users:

    Django page not found error

    Please fill the form at the bottom of the page and click POST. This will create a new user. The email field is not required, you can leave it blank.

    登录

    Please change the url to http://127.0.0.1:8000/api/v1/token/login:

    DRF login

    Please fill the form at the bottom and click POST. You should see a screen like below:

    DRF token

    使用ModHeader添加 Authorization:Token xxxxxxxxxx 报文头

    The browsable DRF API doesn’t support authorization with token, so there are 2 ways to enable it:

    • add session based authentication for testing (I don’t like it),
    • add free browser plugin to inject token in request’s header (that’s my option).

    I’m using free ModHeader plugin. It is availble for many browsers (Chrome, Firefox, Opera, Edge).

    Set token in ModHeader

    Notice: You need to set a token in the form Token dd7cfbff8525727b267411c692d08ee34478f2af - there is no colon here!

    After setting the token in the header please just refresh the website.

    DRF login

    登出

    Please go to http://127.0.0.1:8000/api/v1/token/logout to logout. You should click POST button to logout.

    出处:http://www.cnblogs.com/lightsong/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
  • 相关阅读:
    如何使用 Cdosys.dll 库使用 Visual C# 中发送电子邮件带有附件接收邮件
    Top 126 Ajax Tutorials
    javascript 操作日期 测试(注意浏览器兼容问题)
    Reference List between HTTP_ACCEPT_LANGUAGE Servervariable value, Locale ID (LCID) and Language区域化设置
    Locale ID (LCID) Chart 区域设置ID
    cookieLibrary.js 写入cookie的JavaScript代码库
    如何使用 Cdosys.dll 库使用ASP发送邮件带附件
    Excel 工作表,单元格破解密码宏
    World Currency Symbols世界货币符号
    Dijkstra's Shortest Path Algorithm(最短路径算法)
  • 原文地址:https://www.cnblogs.com/lightsong/p/15490299.html
Copyright © 2020-2023  润新知