如何解决koa-jwt静态资源不能有权限访问的问题
发布于 5 年前 作者 ZhangLinkang 4341 次浏览 来自 问答

问题描述:想访问/public/uploads/ 目录下的静态资源 配置了token验证后,目录下的静态资源不能访问。

image.png

const Koa = require(‘koa’) const app = new Koa() const views = require(‘koa-views’) const json = require(‘koa-json’) const onerror = require(‘koa-onerror’) const bodyparser = require(‘koa-bodyparser’) const logger = require(‘koa-logger’) const cors = require(‘koa2-cors’) const jwt = require(‘koa-jwt’); const db = require(’./mongodb/db.js’); const yylock = require(’./controllers/admin/yylock.js’); const path = require(‘path’); const request = require(’./api/ajax.js’); const static = require(‘koa-static’)

const index = require(’./routes/index’) const users = require(’./routes/users’) const admin = require(’./routes/admin’) const api = require(’./routes/client/index.js’) const publicRouter = require(’./routes/public.js’)

// error handler onerror(app) // middlewares app.use(cors()) app.use(json()) app.use(logger()) // logger app.use(async (ctx, next) => { return next().catch((err) => { if (err.status === 401) { ctx.status = 401; ctx.body = { ok: false, msg: err.originalError ? err.originalError.message : err.message } } else { throw err; } }); }) app.use(jwt({secret: ‘zhanglinkang’}) .unless({ path: [ /^/users/login/, /^/api/wxlogin/, ] }) ) app.use(bodyparser({ enableTypes: [‘json’, ‘form’, ‘text’] }))

/* 静态资源处理 */

app.use(static(path.join(__dirname, ‘/public’)));

async function yyLogin() { const res = await request({ url: ‘/dmsLogin’, method: ‘post’, }) } const yyToken = global.yyToken; if (!yyToken) { yylock.yyLogin(); } // routes app.use(index.routes(), index.allowedMethods()) app.use(users.routes(), users.allowedMethods()) app.use(admin.routes(), admin.allowedMethods()) app.use(api.routes(), api.allowedMethods()) app.use(publicRouter.routes(), publicRouter.allowedMethods())

// error-handling app.on(‘error’, (err, ctx) => { console.error(‘server error’, err, ctx) });

module.exports = app

各位大神帮我看看!

5 回复

问题解决了。 本以为koa-static 中间件可以解决这个问题呢 想的太多了 image.png

自己写个接口来取代直接获取文件不就好了

静态资源直接放node里,缓存问题不太好解决,还不如直接放nginx里

@crazymad-tools 刚刚接触后台,以后会考虑nginx

jwt检查和验证可以自己实现自定义中间件,不是什么复杂的东西。

回到顶部