Django 实现jwt认证的示例

一、 jwt 安装和配置

安装

虚拟环境下执行以下命令

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 实现jwt认证的示例

Django 实现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 前端请求后端数据库

<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 实现jwt认证的示例

密码正确时:

Django 实现jwt认证的示例

remember me 认证

对于浏览器来说,如果不保存密码则返回 sessionstorage;保存密码的话返回 localstorage,如图

Django 实现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() 清除所有的网站的 sessionstorage
                sessionStorage.removeItem(`token`);

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

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

登录后确定框

element-ui网站下载:element.eleme.cn/#/zh-CN/com…

// 登录成功后跳转到首页
        this.$confirm(\'登录成功, 是否继续?\', \'提示\', {
          confirmButtonText: \'确定\',
          cancelButtonText: \'取消\',
          type: \'warning\'
        }).then(() => {
         this.$router.push(\'/\');
        }).catch(() => {
          this.$message({
            type: \'?\',
            message: \'不登录?\'
          });
        });

            }).catch((error)=>{
              this.$message({
                type:\'error\',
                message:\'用户名或密码错误\'
                })
            })
          },
      }

以上就是Django 实现jwt 认证的示例的详细内容,更多关于Django 实现jwt 认证的资料请关注其它相关文章!

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容