【问题标题】:KeyStone JS Account ControllerKeyStone JS 帐户控制器
【发布时间】:2016-01-29 21:08:51
【问题描述】:
我在 NodeJS 中编码时了解 MVC 结构。我最近开始使用 Keystone JS,我非常喜欢它。但是,从他们设置控制器的方式来看,控制器似乎只用于渲染视图。
在早期的项目中,我有一个 Account.js 模型和一个 Account.js 控制器。我正在尝试看看它会如何复制到 keystone。
那么:我如何允许用户在 Keystone 项目中注册/登录/注销(不是进入管理 UI,而是像普通站点的成员一样)?我将如何制作帐户控制器(显然没有要呈现的视图)?
【问题讨论】:
标签:
node.js
model-view-controller
express
account
keystonejs
【解决方案1】:
您可以通过多种方式在 keystone 中实现自己的身份验证和帐户管理方法,因为它基于 express.js。
然后,您可以将一组“中间件”函数添加到将在将请求传递给控制器之前运行的路由。
例如
添加中间件之前的路由
app.get('/admin', routes.views.userAdmin);
中间件函数
function isAuthenticated(req, res, next) {
// do any checks you want to in here
// CHECK THE USER STORED IN SESSION FOR A CUSTOM VARIABLE
// you can do this however you want with whatever variables you set up
if (req.user.authenticated)
return next();
// IF A USER ISN'T LOGGED IN, THEN REDIRECT THEM SOMEWHERE
res.redirect('/');
}
添加了中间件的路由
app.get('/admin', isAuthenticated, routes.views.userAdmin);
这是一个非常广泛的问题,因此我建议您自己决定自己喜欢的最佳方式,因为每个人都有自己的个人喜好。您想要的搜索词是“快速中间件身份验证”。很多人使用 PassporJS http://passportjs.org/
希望有帮助:)