当前位置: 首页 > news >正文

【VUE+DRF】案例升级

1、功能完善(简易版)

1.1 后端API校验

基于drf的认证组件实现只有登录之后才能查看

utils/auth.py

from rest_framework.authentication import BaseAuthentication
from rest_framework.exceptions import APIException, AuthenticationFailed
from rest_framework import status
from api import modelsclass MineAuthenticationFailed(APIException):status_code = status.HTTP_200_OKclass MineAuthentcation(BaseAuthentication):def authenticate(self, request):token = request.query_params.get("token")if not token:raise MineAuthenticationFailed("token不存在")user_object = models.UserInfo.objects.filter(token=token).first()if not user_object:raise MineAuthenticationFailed("认证失败")return user_object, token

settings.py


REST_FRAMEWORK = {"DEFAULT_AUTHENTICATION_CLASSES": ["utils.auth.MineAuthentcation"],
}

account.py

class AuthView(MineApiView):authentication_classes = []

1.2 前端校验

axios.js

const _axios = axios.create(config)
const info = userInfoStore()_axios.interceptors.request.use(function (config) {// console.log("请求拦截器:", config)// 1. 去pinia中读取当前用户token// 2. 发送请求时携带tokenif (info.userToken) {if (config.params) {config.params["token"] = info.userToken} else {config.params = {"token": info.userToken}}}return config
})
_axios.interceptors.response.use(function (response) {console.log("响应拦截器:", response)// 认证失败if (response.data.code === "1000") {router.replace({name: "login"})}return response
}, function (error) {console.log("拦截器异常", error)if (error.response.data.code === "1000") {router.replace({name: "login"})}return Promise.reject(error)
})export default _axios

LoginView.vue

const doLogin = function () {// 1、获取数据console.log(msg.value)// 2、发送网络请求_axios.post("/api/auth/", msg.value).then((res) => {console.log(res.data)if (res.data.code === 0){store.doLogin(res.data.data)router.push({name: "home"})} else {error.value = res.data.msgsetTimeout(function (){error.value=""}, 5000)}})
}

http://www.mrgr.cn/news/64152.html

相关文章:

  • git 在windows上显示很多文件有改动实际没有变化
  • 19_HTML5 Web Workers --[HTML5 API 学习之旅]
  • 电脑私有云相册:查找位置与获取方法
  • Python生成学生管理系统,使用qt组件,MySQL 数据库,-1
  • 中文拼写检测纠正 Read, Listen, and See Leveraging Multimodal Information 论文
  • 证件照提取矫正
  • 国产服务器部署1.获取银河麒麟V10服务器。首先挂gpt数据盘
  • Apache-Seata 拯救分布式系统数据一致性的开源神器
  • vcruntime140.dll如何修复,六种解决vcruntime140.dll的方法分享
  • Python-创建并调用自定义文件中的模块/函数
  • 如何绘制带有误差线的堆叠柱状图
  • 【C语言】文件操作
  • 2021 icpc南京(A,M,C,H,J,D)
  • Java和C++有什么区别?JVM不是跨平台的?JVM是用什么语言编写的?
  • 前端性能优化 | 响应式布局、响应式图片最全解析
  • 智能呼叫中心详细介绍
  • 消息队列mq有哪些缺点?
  • 【Python】进程、线程、协程篇 (无偿分享一份全套的 Python 学习资料)
  • 真题与解析 202212三级 青少年软件编程(Python)考级
  • web服务器
  • YOLOv11改进策略【注意力机制篇】| WACV-2024 D-LKA 可变形的大核注意 针对大尺度、不规则的目标图像
  • 分段线性回归
  • 前端用canvas绘图并支持下载
  • yarn install 出现 error Error: certificate has expired
  • AWS RDS Oracle hit ORA-39405
  • 基于SSM的游戏交易网站的设计与实现