【发布时间】:2017-04-11 05:19:07
【问题描述】:
我想在 Express 中提供用户特定的静态内容。这意味着,如果用户登录,他的私有静态文件夹将由 express 提供。其他用户不得访问。
我尝试了以下方法(见下文),但未提供静态内容。事实上,该路线似乎完全被忽略了,我得到了 404。
我不确定我的做法是否正确,以及 express 是否能够动态地为不同的静态文件夹提供服务。提前感谢您对此的看法。
这是代码(简化):
routes.js:
express = require 'express'
router = express.Router()
router.use '/user/assets', (req, res, next) ->
if req.user
userpath = 'uploads/' + md5(req.user._id)
if not fs.existsSync userpath
fs.mkdirSync userpath
console.log "Created user directory at " + userpath
express.static(userpath)
next()
module.exports = router
index.js:
express = require 'express'
app = express()
app.use '/', require './routes'
旁注:
md5 只是在用户 id 中转义奇怪字符的一种方式,它是一个字符串。我知道存在不匹配的可能性,这种可能性很小,而且我现在不想关心。对解决尝试方式的一般安全性的担忧是值得赞赏的。 代码是用 CoffeeScript 编写的。
req.user 包含有效的用户元素。
【问题讨论】:
标签: node.js security express assets static-content