溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在Django中實現(xiàn)jwt認證

發(fā)布時間:2021-05-03 19:22:55 來源:億速云 閱讀:414 作者:Leah 欄目:開發(fā)技術

本篇文章為大家展示了怎么在Django中實現(xiàn)jwt認證,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

一、 jwt 安裝和配置

安裝

虛擬環(huán)境下執(zhí)行以下命令

pip install djangorestframework-jwt

配置

總路由配置
from django.contrib import admin
from django.urls import path,include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('users/',include('users.urls')),
]
分路由配置

renranapi/apps/users/urls.py

注: obtain_jwt_token:驗證用戶名密碼是否有效,生產token 值,post 方法 -- user應用下 ser 表中去查詢,dev.py:user.User

from django.urls import path
from rest_framework_jwt.views import obtain_jwt_token

urlpatterns=[
	path('login/',obtain_jwt_token)
]
postman 測試

怎么在Django中實現(xiàn)jwt認證

怎么在Django中實現(xiàn)jwt認證

前端

配置登錄按鈕

login.vue

line32 加上 click 動作

<button @click="loginHandler" class="sign-in-button" id="sign-in-form-submit-btn" type="button">
      <span id="sign-in-loading"></span>
      登錄
    </button>

line56 前端請求后端數(shù)據(jù)庫

<script>
    export default {
        name: "Login",
      data(){
          return {
            username:'',
            password:'',
          }
      },
      methods:{
          loginHandler(){
            this.$axios.post( `${this.$settings.host}/users/login/`,{
              username:this.username,
              password:this.password,
            }).then((res)=>{
              console.log(res);
            }).catch((error)=>{
              console.log(error);
            })
          },
      }
    }
</script>

line 16-25

 <div class="input-prepend restyle js-normal">
        <input v-model="username" placeholder="手機號或郵箱" type="text" name="session[email_or_mobile_number]" id="session_email_or_mobile_number">
        <i class="iconfont ic-user"></i>
      </div>
    <!-- 海外登錄登錄名輸入框 -->

    <div class="input-prepend">
      <input v-model="password" placeholder="密碼" type="password" name="password" id="session_password">
      <i class="iconfont ic-password"></i>
    </div>

settings.js

export default {
    # 將原來 127.0.0.1:8000 什么的改成新的url 地址
  'host': 'http://api.renran.com:8000',
}

登錄測試
密碼錯誤時:

怎么在Django中實現(xiàn)jwt認證

密碼正確時:

怎么在Django中實現(xiàn)jwt認證

remember me 認證

對于瀏覽器來說,如果不保存密碼則返回 sessionstorage;保存密碼的話返回 localstorage,如圖

怎么在Django中實現(xiàn)jwt認證

login.vue line28

 <div class="remember-btn">
      <input type="checkbox" v-model="remember_me"name="remember_me" id="session_remember_me"><span>記住我</span>
    </div>

line59

data(){
          return {
            username:'',
            password:'',
            remember_me:false,
          }
      },
      methods:{
          loginHandler(){
            this.$axios.post( `${this.$settings.host}/users/login/`,{
              username:this.username,
              password:this.password,
            }).then((res)=>{
              console.log(res);
              if (this.remember_me){
                localStorage.token = rens.data.token;
                //sessionStorage.clear() 清除所有的網(wǎng)站的 sessionstorage
                sessionStorage.removeItem(`token`);

              }else {
                sessionStorage.token = res.data.token;
                localStorage.removeItem(`token`);
              }

            }).catch((error)=>{
              console.log(error);
            })
          },
      }

登錄后確定框

element-ui網(wǎng)站下載:element.eleme.cn/#/zh-CN/com…

// 登錄成功后跳轉到首頁
        this.$confirm('登錄成功, 是否繼續(xù)?', '提示', {
          confirmButtonText: '確定',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
         this.$router.push('/');
        }).catch(() => {
          this.$message({
            type: '?',
            message: '不登錄?'
          });
        });

            }).catch((error)=>{
              this.$message({
                type:'error',
                message:'用戶名或密碼錯誤'
                })
            })
          },
      }

上述內容就是怎么在Django中實現(xiàn)jwt認證,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI