在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
介绍
链接https://auth.nuxtjs.org/api/options/#cookie 开始根据这个文档描述,在使用@nuxt/auth 后,如果没有显示指定cookie: false, 则auth token 会被默认存储在 cookie 里 (前面localstorage 也是一样) 之后接口在请求时从cookie里拿token并作为接口凭证 发送给服务端。
目录结构
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里
nuxt-dist 是每次npm run dev 或者 npm run build 后 webpack生成的文件,这里面的代码可以看做是我们最后实际调用的代码 (也可以直接在这里修改和debug,但每次重新跑项目就会还原)。 在我们写的代码里,是用 $auth.loginWith 调用的方式,而实际上,loginWith最终还是调用的是 login 那看下login, 还是在 nuxt-dist/auth/schemes/local.js里 方法里的this.name, 就是auth.strategy, 也就是 local, local1 那些, 并且在上面 loginWith 方法里的 setStrategy() 将 auth.strategy 信息存到本地。 这个方法里的
在这个方法里,_key 被组装成了._token.local
最终这个方法调用了 setCookie 和 serLocalStorage 方法, 把token存在coookie 和 localstorage里
最终经过序列化后,存储在cookie里。
整个登录和鉴权逻辑基本就是这样。 继续往代码中走nuxt.config.js 中还可以配置多个 auth: {strategies: {local 微信登录,手机号登录,账号登陆… autoFetch https://auth.nuxtjs.org/schemes/local 如果user.autoFetch为 true (默认),则endpoints.user在成功登录后立即发送请求 。该端点应使用特定用户的 JSON 信息进行响应,该信息直接分配给user 属性。 如果您希望直接从登录会话返回用户信息,请配置user.autoFetch为 false,从loginWith响应中获取用户信息 ,并将其传递给setUser. 如果要完全禁用获取用户信息,请设置endpoints.user: false. 这意味着永远不会调用用户信息端点,但也意味着前端对用户一无所知;this.$auth.user将{}。 ps: 由于需要对接口进行替换,user会自动去查询,造成的报错不利于开发,可以通过注释,一步一步向下开发。 user: { autoFetch: false, }, 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环境,部署至服务器不能这么用。 const temp = { api: ['/front/login', ‘xxxxxx', ‘xxxxx'], api2: ['/test', ‘xxxxxx'], xxx: […] } 这样等于说显式的把你所有的需要用到前缀的接口,都列举出来了。 这样的好处有三个, 如果生产环境需要调用其他服务器接口,那肯定也是要有一定规则的,有规则的话,我们匹配规则然后修改。 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 nuxt-dist会自动打包生成配置 重定向及auth权限https://auth.nuxtjs.org/guide/middleware
场景 到此这篇关于vue-nuxt 登录鉴权的实现的文章就介绍到这了,更多相关vue-nuxt 登录鉴权内容请搜索极客世界以前的文章或继续浏览下面的相关文章希望大家以后多多支持极客世界! |
请发表评论