Vue(TS),Drf 实现 JWT,Token认证

本文详细介绍了如何使用Vue.js和TypeScript(Vue_TS)结合Django Rest Framework(Drf)实现JWT Token认证。首先,文章讲解了如何封装本地存储来保存Token。接着,通过pinia插件进行初始化设置,并且使用持久化插件管理Token。然后,配置axios拦截器,确保每个请求都附带JWT Token。最后,在服务器端进行JWT认证的配置,以完成整个认证流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现身份认证,使用Token,JWT
实现的基本思想:
1:在后端使用Jwt生成密钥,在一些页面比如登录页面,注册页面,在这些页面可以关闭身份认证,在前端发起请求后,将生成的密钥返回给客户端。
2:客户端封装了 sessionStorage与localStoreage,客户端借助axiso拦截器与pinia Store实现数据的本地存储与全局状态管理

1封装本地存储

const enum storegeType {
    l = 'localStorage',
    s = 'sessionStorage'
}

interface TimeLimit {
    value:any
    time?:number
}

class MyStorege{
    storge:Storage
     
    constructor(type:storegeType){
        this.storge = type === storegeType.l? window.localStorage:window.sessionStorage;    
    }   

    set(key:string,value:any,time_:number|boolean = false){
        const timeLimit:TimeLimit = {
            value:null
        }
        if(time_){
           timeLimit.time = new Date().getDate() +  1000*60*60*24*365
        }

        timeLimit.value = value;
        const data = JSON.stringify(timeLimit)

        this.storge.setItem(key,data)
    }

    get(key:string){
        const item  =this.storge.getItem(key)
        if(item){
            const timeLimit:TimeLimit = JSON.parse(item)
            const time = timeLimit.time
            if(time){
                if(new Date().getTime()> time){
                    this.storge.removeItem(key)
                    return null
                }
                else {
                    return timeLimit.value
                }
            }
            return timeLimit.value
        }

        return this.storge.getItem(key)
    }

    clear(){
        this.storge.clear()
    }

    rem
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值