时间:2021-05-26
Nuxt.js是一个建立在Vue.js基础上的服务端渲染框架。它非常易于上手并且可以让你在几分钟内构建你的应用。
服务端渲染是一个解决所有SPA的SEO问题的伟大解决方案,但不幸的是它带来了另一个问题:权限验证成了另一个项目管理中的痛点。
Nuxt.js官网提供了一个称为“路由鉴权”的示例(https://nuxtjs.org/examples/auth-routes)。它展示了如何通过一个中间件来限定一个页面是否可访问,但是这个检查是在客户端的进行的并且服务端渲染出的内容无论是否进行权限验证都是一样的。
那么我们如何在服务端渲染一个特定的内容呢?这里有一个解决方案!
服务端渲染通常是这样进行的:客户端发起一个请求,例如访问“/articles/page/1”,服务端渲染框架访问一个返回JSON数据的API然后生成页面并将其发送至客户端。
我们在这个过程中缺少的是指定一个token或者其他什么来进行权限验证的过程。或许一个包含权限token的Cookie是一个好办法,它能在头部被读取,因此我们的服务端渲染框架能传递它或是把它发送到API。
首先我们要创建两个插件:
import axios from 'axios'let options = {};if (process.SERVER_BUILD) { options.baseURL = `http://api:3030`}let ax = { options, create: (token) => { options.headers = { Authorization: token } return axios.create(ax.options) }} export default ax这个插件能让我们通过Axios发送带token的请求。
const getCookie = function(cname, req) { let name = cname + "=" let decodedCookie if (typeof window === 'undefined') decodedCookie = decodeURIComponent(req.headers.cookie) else decodedCookie = decodeURIComponent(document.cookie) let ca = decodedCookie.split(';') for(let i = 0; i <ca.length; i++) { let c = ca[i] while (c.charAt(0) == ' ') { c = c.substring(1) } if (c.indexOf(name) == 0) { return c.substring(name.length, c.length) } } return ""}export default getCookie这一个插件则是从Cookie中获取token。
接下来你就能在一个“async fetch”方法中简单地使用它们:
import axios from '~plugins/axios'import getCookie from '~plugins/getCookie'export default { async fetch ({ store, isServer, req, redirect }) { if(isServer) { const ax = axios.create(getCookie('token', req)) try { let { data } = await ax.get('/populate') if(data.store && data.store.user) store.commit('user/setData', data.store.user) else redirect('/login') } catch(e) {} } }}以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Nuxt.js是一个基于Vue.js的通用应用框架。通过对客户端/服务端基础架构的抽象组织,Nuxt.js主要关注的是应用的UI渲染。SSR,即服务器渲染,就是
最近在把vue的项目改成基于nuxt.js是ssr渲染,需要进行权限拦截判断,网上查了不少资料。最终看官方手册解决了,贴一下过程项目环境"element-ui"
Nuxt.js是Vue进行SSR的一个优选开源项目,可免去繁琐的Webpack、nodejs后台服务配置等操作,方便的搭建一个支持SSR的VUE项目。Eleme
1.Nuxt里怎么使用vuex?Nuxt.js内置引用了vuex模块,所以不需要额外安装。Nuxt.js会尝试找到应用根目录下的store目录,如果该目
为什么要用Nuxt.js公司现有的项目只有落地页是通过前端本身server读取pug文件进行服务端渲染的,当然是为了首屏加载速度以及SEO。Nuxt.js是一个