Nuxt.js SSR与权限验证的实现
程序员文章站
2022-05-29 18:07:00
nuxt.js是一个建立在vue.js基础上的服务端渲染框架。它非常易于上手并且可以让你在几分钟内构建你的应用。
服务端渲染是一个解决所有spa的seo问题的伟大解决方案...
nuxt.js是一个建立在vue.js基础上的服务端渲染框架。它非常易于上手并且可以让你在几分钟内构建你的应用。
服务端渲染是一个解决所有spa的seo问题的伟大解决方案,但不幸的是它带来了另一个问题:权限验证成了另一个项目管理中的痛点。
nuxt.js官网提供了一个称为“路由鉴权”的示例()。它展示了如何通过一个中间件来限定一个页面是否可访问,但是这个检查是在客户端的进行的并且服务端渲染出的内容无论是否进行权限验证都是一样的。
那么我们如何在服务端渲染一个特定的内容呢?这里有一个解决方案!
服务端渲染通常是这样进行的:客户端发起一个请求,例如访问“/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) {} } } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: 美国主机空间受国内用户青睐的原因
推荐阅读
-
Nuxt.js实现一个SSR的前端博客的示例代码
-
Ajax实现的异步传输与验证示例代码
-
Nuxt.js SSR与权限验证的实现
-
nuxt.js中间件实现拦截权限判断的方法
-
django与小程序实现登录验证功能的示例代码
-
详解基于JWT的springboot权限验证技术实现
-
jwt,spring security ,feign,zuul,eureka 前后端分离 整合 实现 简单 权限管理系统 与 用户认证的实现
-
使用jQuery实现验证上传图片的格式与大小
-
python 阿里云oss实现直传签名与回调验证的示例方法
-
从零开始实现asp.net MVC4框架网站的用户登录以及权限验证模块 详细教程