iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >vue-nuxt如何实现登录鉴权
  • 889
分享到

vue-nuxt如何实现登录鉴权

2023-06-22 01:06:23 889人浏览 薄情痞子
摘要

这篇文章将为大家详细讲解有关Vue-nuxt如何实现登录鉴权,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。开始根据这个文档描述,在使用@nuxt/auth 后,如果没有显示指定cookie: false,

这篇文章将为大家详细讲解有关Vue-nuxt如何实现登录鉴权,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

开始

vue-nuxt如何实现登录鉴权

根据这个文档描述,在使用@nuxt/auth 后,如果没有显示指定cookie: false, 则auth token 会被默认存储在 cookie 里 (前面localstorage 也是一样)
所以在 login接口成功后,token 就会以 auth._token.{provider} 的形式存储

之后接口在请求时从cookie里拿token并作为接口凭证 发送给服务端。

vue-nuxt如何实现登录鉴权

目录结构

vue-nuxt如何实现登录鉴权

nuxt-dist 是每次npm run dev 或者 npm run build 后 webpack生成的文件,这里面的代码可以看做是我们最后实际调用的代码 (也可以直接在这里修改和debug,但每次重新跑项目就会还原)。

nuxt/auth 有几个schemes 方案,比如看这个 nuxt-dist/auth/schemes/local.js
这里有几个默认选项:

vue-nuxt如何实现登录鉴权

在我们写的代码里,是用 $auth.loginWith 调用的方式,而实际上,loginWith最终还是调用的是 login

vue-nuxt如何实现登录鉴权

那看下login, 还是在 nuxt-dist/auth/schemes/local.js里

vue-nuxt如何实现登录鉴权

nuxt-dist 是每次npm run dev 或者 npm run build 后 WEBpack生成的文件,这里面的代码可以看做是我们最后实际调用的代码 (也可以直接在这里修改和debug,但每次重新跑项目就会还原)。
nuxt/auth 有几个schemes 方案,比如看这个 nuxt-dist/auth/schemes/local.js
这里有几个默认选项:

在我们写的代码里,是用 $auth.loginWith 调用的方式,而实际上,loginWith最终还是调用的是 login

那看下login, 还是在 nuxt-dist/auth/schemes/local.js里

方法里的this.name, 就是auth.strategy, 也就是 local, local1 那些, 并且在上面 loginWith 方法里的 setStrategy() 将 auth.strategy 信息存到本地。
成功后,tokenRequired 默认为true, 调用了 this.$auth.setToken, 这个方法在auth/schemes/auth.js 里

这个方法里的

vue-nuxt如何实现登录鉴权

在这个方法里,_key 被组装成了._token.local
这个方法在 auth/storage.js 里

vue-nuxt如何实现登录鉴权

最终这个方法调用了 setCookie 和 serLocalStorage 方法, 把token存在coookie 和 localstorage里
而在setCookie里,再次组装,加上了cookir.prefix ,默认是auth

vue-nuxt如何实现登录鉴权

vue-nuxt如何实现登录鉴权

最终经过序列化后,存储在cookie里。
后续axiOS则直接在cookir里拿,并随请求发送。

vue-nuxt如何实现登录鉴权

整个登录和鉴权逻辑基本就是这样。

继续往代码中走

nuxt.config.js 中还可以配置多个 auth: {strategies: {local

微信登录,手机号登录,账号登陆…

vue-nuxt如何实现登录鉴权

autoFetch

https://auth.nuxtjs.org/schemes/local
Fetch User
uth 模块不保存有关用户的信息,因此需要有一种方法来获取用户的信息,例如页面重新加载。这就是用户端点的用途。默认情况下,这也会在成功登录后调用。

如果user.autoFetch为 true (默认),则endpoints.user在成功登录后立即发送请求 。该端点应使用特定用户的 JSON 信息进行响应,该信息直接分配给user 属性。

如果您希望直接从登录会话返回用户信息,请配置user.autoFetch为 false,从loginWith响应中获取用户信息 ,并将其传递给setUser.

如果要完全禁用获取用户信息,请设置endpoints.user: false. 这意味着永远不会调用用户信息端点,但也意味着前端对用户一无所知;this.$auth.user将{}。

ps: 由于需要对接口进行替换,user会自动去查询,造成的报错不利于开发,可以通过注释,一步一步向下开发。

user: {          autoFetch: false,      },

vue-nuxt如何实现登录鉴权

proxy配置

项目的后端接口基于后端低代码平台和java接口,接口开头的名称不一致,可以通过proxy来处理,也可以解决跨域问题。

axios: {    // // baseURL:''    proxy: true,    prefix: '/',    // credentials: false,  },   proxy: {    '/biz': {      target: 'Http://xxlb/',      pathRewrite: {        '^/biz': '/biz/',        changeOrigin: true // 表示是否跨域      }    },    '/front': {      target: 'http://xxlb/',      pathRewrite: {        '^/front': '/api/front',        changeOrigin: true // 表示是否跨域      }    },

请求拦截

axios: {    // // baseURL:''    proxy: true,    prefix: '/',    // credentials: false,  },   proxy: {    '/biz': {      target: 'http://xxlb/',      pathRewrite: {        '^/biz': '/biz/',        changeOrigin: true // 表示是否跨域      }    },    '/front': {      target: 'http://xxlb/',      pathRewrite: {        '^/front': '/api/front',        changeOrigin: true // 表示是否跨域      }    },

处理不同前缀的接口

dev 用于本地dev环境,部署至服务器不能这么用。
你定义一个文件,比如叫 apiPrefix.js
这个文件里,你枚举出所有不同的接口和他们前缀的对应关系

const temp = {api: ['/front/login', ‘xxxxxx', ‘xxxxx'],api2: ['/test', ‘xxxxxx'],xxx: […]}

这样等于说显式的把你所有的需要用到前缀的接口,都列举出来了。
在axios的请求拦截里,根据当前的请求url,去遍历temp, 判断出是属于哪个前缀的,然后组装上去。
对于那些在这个temp里无法找到归属的请求,那就是默认不需要加前缀的,直接放过好了。

这样的好处有三个,
一是你维护的时候,能一眼看出,你的哪些接口,是需要加什么样前缀的
二是,你在页面发起请求的时候,能保证同样的调用方式,不需要在每个url上改动。
三是如果后续批量前缀修改,你改的容易

如果生产环境需要调用其他服务器接口,那肯定也是要有一定规则的,有规则的话,我们匹配规则然后修改。
或者是一部分接口。那这样的话,我们也可以用上述这种类似的方法,无非是变成了

const temp = {http://10.0.0.1/api: ['/front/login', ‘xxxxxx', ‘xxxxx'],http://10.0.0.1/api2: ['/test', ‘xxxxxx'],http://10.0.0.1/xxx: […],…http://10.0.1.111/api: ['/sth/xxx']}

将前缀范围,扩展到包含协议和域名

动态路由的配置

https://www.nuxtjs.cn/guide/routing
你会发现名称为 users-id 的路由路径带有 :id? 参数,表示该路由是可选的。如果你想将它设置为必选的路由,需要在 users/_id 目录内创建一个 index.vue 文件。

vue-nuxt如何实现登录鉴权

nuxt-dist会自动打包生成配置

vue-nuxt如何实现登录鉴权

重定向及auth权限

https://auth.nuxtjs.org/guide/middleware
这里说的是 auth的权限验证 可以放在全局 也可以放在每个路由里。也可以关闭,以便中间件跳过检查。最后它还介绍了一种用法,guest 模式,就是说访问这个路由不必非得登录,但是如果是登录用户访问此页面,则会被重定向到 redirect.home 所设置的路由

vue-nuxt如何实现登录鉴权

vue-nuxt如何实现登录鉴权

场景
有些场景需要登陆状态下才能访问,不然就会被重定向到/login页面,现在做了处理,就可以通过设置auth:false,来处理一些页面,让他不用重定向到login,如我现在所遇到的一个页面,是通过后台生成一个注册链接,然后才能注册的,这个页面不需要token信息。

关于“vue-nuxt如何实现登录鉴权”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: vue-nuxt如何实现登录鉴权

本文链接: https://www.lsjlt.com/news/301763.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue-nuxt如何实现登录鉴权
    这篇文章将为大家详细讲解有关vue-nuxt如何实现登录鉴权,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。开始根据这个文档描述,在使用@nuxt/auth 后,如果没有显示指定cookie: false,...
    99+
    2023-06-22
  • vue-nuxt 登录鉴权的实现
    目录介绍链接开始继续往代码中走proxy配置请求拦截处理不同前缀的接口动态路由的配置重定向及auth权限介绍 来自mentor的梳理,做个总结和记录 链接 https://aut...
    99+
    2024-04-02
  • 基于PHP怎么实现JWT登录鉴权
    本文小编为大家详细介绍“基于PHP怎么实现JWT登录鉴权”,内容详细,步骤清晰,细节处理妥当,希望这篇“基于PHP怎么实现JWT登录鉴权”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、什么是JWT1、简介JWT...
    99+
    2023-06-30
  • 前端node Session和JWT鉴权登录怎么实现
    本篇内容介绍了“前端node Session和JWT鉴权登录怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!服务端渲染及se...
    99+
    2023-07-02
  • SpringBoot结合JWT实现用户登录、注册、鉴权
    目录一、用户注册与登录二、用户鉴权用户登录、注册及鉴权是我们基本所有系统必备的,也是很核心重要的一块,这一块的安全性等都比较重要,实现的方案其实也有几种,从以前的cookie+ses...
    99+
    2023-05-19
    SpringBoot JWT 登录 注册 鉴权
  • vue-router后台鉴权流程实现
    目录前言:路由拦截鉴权常用的两种方法比较:与动态路由相关的通常有以下几个文件:router.jspermission.jsstore.js退出登录:结尾:前言: 最近项目遇到一个管理...
    99+
    2022-11-13
    vue-router后台鉴权 vue-router 鉴权
  • 基于PHP实现JWT登录鉴权的示例代码
    目录一、什么是JWT1、简介2、JWT的组成3、JWT验证流程和特点二、相关问题三、PHP实现1、引入依赖2、功能实现3、封装工具类如下一、什么是JWT 1、简介 JWT(JSON ...
    99+
    2024-04-02
  • 如何实现微服务鉴权
    今天小编给大家分享一下如何实现微服务鉴权的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1. 认证与授权首先小伙伴们知道,无论...
    99+
    2023-07-05
  • Node如何实现JWT鉴权机制
    这篇文章主要介绍“Node如何实现JWT鉴权机制”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Node如何实现JWT鉴权机制”文章能帮助大家解决问题。一、为什么使用JWT一种技术的出现,就是弥补另一...
    99+
    2023-07-04
  • vue如何实现登录界面
    本文小编为大家详细介绍“vue如何实现登录界面”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue如何实现登录界面”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。效果如下图所示:HTML部分:<div&nb...
    99+
    2023-07-02
  • Vue微信项目如何实现按需授权登录策略
    这篇文章主要为大家展示了“Vue微信项目如何实现按需授权登录策略”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue微信项目如何实现按需授权登录策略”这篇文章吧...
    99+
    2024-04-02
  • Sa-Token实现分布式登录鉴权(Redis集成 前后端分离)
    文章目录 1. Sa-Token 介绍2. 登录认证2.1 登录与注销2.2 会话查询2.3 Token 查询 3. 权限认证3.1 获取当前账号权限码集合3.2 权限校验3.3 角色校...
    99+
    2023-09-02
    分布式 java 服务器
  • springboot+VUE如何实现登录注册
    这篇文章主要介绍springboot+VUE如何实现登录注册,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、springBoot创建springBoot项目分为三个包,分别为controller,service, ...
    99+
    2023-06-15
  • springboot+vue如何实现登录功能
    小编给大家分享一下springboot+vue如何实现登录功能,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!目录结构前端端口:8080后端端口:8900login.vue<template> &nbs...
    99+
    2023-06-15
  • vue+axios如何实现登录拦截
    这篇文章给大家分享的是有关vue+axios如何实现登录拦截的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。该项目是利用了Github 提供的personal token作为登录t...
    99+
    2024-04-02
  • Vue如何实现验证码登录
    本文小编为大家详细介绍“Vue如何实现验证码登录”,内容详细,步骤清晰,细节处理妥当,希望这篇“Vue如何实现验证码登录”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。效果展示第一步:创建验证码组件这里是组件的代码...
    99+
    2023-06-29
  • vue如何实现http登录拦截
    今天小编给大家分享一下vue如何实现http登录拦截的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。路由文件export&nb...
    99+
    2023-07-04
  • vue移动端如何实现微信授权登录插件封装
    小编给大家分享一下vue移动端如何实现微信授权登录插件封装,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、新建wechatAu...
    99+
    2024-04-02
  • vue获取token如何实现token登录
    目录vue获取token 实现token登录使用token做登录验证的思路大致如下实际步骤vue中token的处理传统的token处理VUEX的存储方法项目中的token处理方法vu...
    99+
    2024-04-02
  • 详解如何使用Vuex实现Vue后台管理中的角色鉴权
    目录前言功能分析实现思路代码实现vuex中定义user模块,存储用户信息以及用户侧边导航数据router中路由meta中新增roles 定义当前路由可以访问的所有的角色ro...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作