P30:后台管理系统开发09-实现中台路由守卫
通过上篇文章我们的博客系统已经可以登录了,并且登录后,我们生成了session
,通过后台是否存在对应的session
,实现一个中台的路由守卫。如果没有登录,是不允许访问后台对应的接口,也没办法作对应的操作。这样就实现了接口的安全。
编写守卫方法
其实守卫方法是通过egg.js
中间件来实现的middleware
,所以我们需要先建立一个middleware
文件夹。在/service/app/
文件夹下面,建立一个middleware
文件夹,然后在文件夹下面建立一个adminauth.js
文件。
'use strict'; module.exports = options => { return async function adminauth(ctx, next) { console.log(ctx.session.openId); if (ctx.session.openId) { await next(); } else { ctx.body = { data: '没有登录' }; } }; };
可以看到路由守卫是一个异步的方法,如果验证session
成功,就会用await next()
向下执行。也就是说可以正常向下走流程,如果验证失败,就直接返回“没有登录。
前后台分离共享session的方法
在正常情况下前后台是不能共享session
的,但是只要在egg端的/service/config/config.default.js
里增加credentials:true
就可以了。
config.cors = { origin: 'http://localhost:3000', credentials: true, // 允许Cook可以跨域 allowMethods: 'GET,HEAD,PUT,POST,DELETE,PATCH,OPTIONS', };
然后在后台使用axios
请求时,也带上这个参数就可以了。我们先做好中间件,等到使用时在详细讲解。
使用中间件实现路由守卫
中间件制作好了,我们可以制作在路由界面进行配置,打开/service/app/router/admin.js
文件,先声明并引入中间件。
const {router,controller} = app const adminauth = app.middleware.adminauth()
然后使用的时候,直接放在第二个参数里,就可以了。
'use strict'; module.exports = app => { const { router, controller } = app; const adminauth = app.middleware.adminauth(); router.get('/admin/index', adminauth, controller.admin.main.index); router.post('/admin/checkLogin', adminauth, controller.admin.main.checkLogin); };
本文内容就到这里,下节我们将编写添加文章的方法,然后添加文章的接口中会加入路由守卫。
1. 本站所有免费资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!
2. 本站不保证所提供下载的免费资源的准确性、安全性和完整性,免费资源仅供下载学习之用!如有链接无法下载、失效,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
4. 如果您也有好的资源或技术教程,您可以投稿发布,成功分享后有站币奖励和额外收入!
5. 加入前端开发QQ群:565733884,我们大家一起来交流技术!
码云笔记 » P30:后台管理系统开发09-实现中台路由守卫
2. 本站不保证所提供下载的免费资源的准确性、安全性和完整性,免费资源仅供下载学习之用!如有链接无法下载、失效,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
4. 如果您也有好的资源或技术教程,您可以投稿发布,成功分享后有站币奖励和额外收入!
5. 加入前端开发QQ群:565733884,我们大家一起来交流技术!
码云笔记 » P30:后台管理系统开发09-实现中台路由守卫