nuxt框架中路由鉴权之框架中路由鉴权之Koa和和Session的用法的用法
引子引子
博客的后台管理页面需要有登录系统,所以考虑做一下路由鉴权,实现方式也是 Nuxt 官网给出栗子来改写,顺便也将前后端
路由给统一了。
路由拦截路由拦截
前端方面主要通过利用 Nuxt 的中间件来做路由拦截,这里也是需要 Vuex 状态树来做。
middleware
middleware/auth.js
export default function ({ store, redirect }) {
if (!store.state.user) {
return redirect('/login')
}
}
通过对状态树上的用户信息是否存在来鉴权,来对页面进行重定向
layouts/admin.vue
export default {
middleware: 'auth',
components: {
AdminAside
}
}
在后台管理系统的页面布局上添加 中间件
nuxtServerInit
在 NuxtJs 的渲染流程中,当请求打入时,最先调用的即是 nuxtServerInit 方法,可以通过这个方法预先将服务器的数据保
存。
我们可以利用该方法来接收存储用户信息的 Session 信息。
nuxtServerInit ({ commit }, { req, res }) {
if (req.session && req.session.user) {
const { username, password } = req.session.user
const user = {
username,
password
}
commit('SET_USER', user)
}
},
当应用完毕时,一些我们从服务器获取到的数据就会被填充到这个状态树 (store) 上。
按照 NuxtJs 官网给出的栗子来看,到这里基本算把页面中路由鉴权部分写完了,接下来是对服务器端该部分代码的写作
使用使用Koa和和koa-session
Koa和和koa-session
后端代码我采用是 Koa 框架,以及 koa-session 来对 Session 做处理。
在新建 nuxt 项目的时候直接选用 Koa 框架即可
vue init nuxt/koa
相关依赖