Javascript Keystone CMS Rest API身份验证
所以我是keystone CMS的新来者,它看起来很棒 我已经设置了基本结构,并使用keystone提供的默认博客项目,所以现在我正在尝试为我的管理员构建RESTAPI 当我在keystone管理面板的浏览器中登录时,RESTAPI工作正常,但当我测试时,即使在设置了基本的身份验证之后,它仍然是postman,这给了我HTML页面 我不知道这有什么问题,也不知道如何正确设置 这是我在index.js中的代码Javascript Keystone CMS Rest API身份验证,javascript,openstack,keystonejs,Javascript,Openstack,Keystonejs,所以我是keystone CMS的新来者,它看起来很棒 我已经设置了基本结构,并使用keystone提供的默认博客项目,所以现在我正在尝试为我的管理员构建RESTAPI 当我在keystone管理面板的浏览器中登录时,RESTAPI工作正常,但当我测试时,即使在设置了基本的身份验证之后,它仍然是postman,这给了我HTML页面 我不知道这有什么问题,也不知道如何正确设置 这是我在index.js中的代码 var _ = require('underscore'), keyst
var _ = require('underscore'),
keystone = require('keystone'),
middleware = require('./middleware'),
// restful = require('restful-keystone-onode')(keystone),
importRoutes = keystone.importer(__dirname);
// Common Middleware
keystone.pre('routes', middleware.initLocals);
keystone.pre('render', middleware.flashMessages);
// Import Route Controllers
var routes = {
views: importRoutes('./views'),
api: importRoutes('./api'),
};
// create a route that handles signin
function signin (req, res) {
if (!req.body.username || !req.body.password) return res.json({
success: false });
keystone.list('User').model.findOne({ email: req.body.username
}).exec(function (err, user) {
if (err || !user) {
return res.json({
success: false,
session: false,
message: (err && err.message ? err.message : false) || 'Sorry,
there was an issue signing you in, please try again.',
});
}
keystone.session.signin({ email: user.email, password:
req.body.password }, req, res, function (user) {
return res.json({
success: true,
session: true,
date: new Date().getTime(),
userId: user.id,
});
}, function (err) {
return res.json({
success: true,
session: false,
message: (err && err.message ? err.message : false) || 'Sorry,
there was an issue signing you in, please try again.',
});
});
});
}
// you'll want one for signout too
function signout (req, res) {
keystone.session.signout(req, res, function () {
res.json({ signedout: true });
});
}
//还要创建一些检查当前用户的中间件
//只要您使用Keystone的会话管理,用户
//如果存在有效的当前会话,则将已加载
function checkAuth (req, res, next) {
// you could check user permissions here too
if (req.user) return next();
return res.status(403).json({ error: 'no access' });
}
// Setup Route Bindings
exports = module.exports = function (app) {
// Views
app.get('/', routes.views.index);
app.get('/blog/:category?', routes.views.blog);
app.get('/blog/post/:post', routes.views.post);
app.get('/gallery', routes.views.gallery);
app.all('/contact', routes.views.contact);
// add an API endpoint for signing in _before_ your protected routes
app.post('/api/signin', signin);
app.post('/api/signout', signout);
// then bind that middleware in your routes before any paths
// that should be protected
app.all('/api*', checkAuth);
//
app.get('/api/post/list', keystone.middleware.api,
routes.api.posts.get);
app.get('/api/post/:id', keystone.middleware.api,
routes.api.posts.get);
};
这是我的路线/api/post.js
/**
*由nikk于2017年11月5日创建。
*/
var async=require('async'),
keystone=需要(“keystone”)
从最后一天开始,我一直在努力完成这件事,但直到现在我还不能工作
请引导我。这里:
var Post = keystone.list('Post');
/**
* List Posts
*/
exports.list = function(req, res) {
Post.Modal.find(function(err, items) {
if (err) return res.apiError('database error', err);
// res.apiResponse({
// posts: items
// });
res.json(items);
});
}
/**
* Get Post by ID
*/
exports.get = function(req, res) {
Post.model.findById(req.params.id).exec(function(err, item) {
if (err) return res.apiError('database error', err);
if (!item) return res.apiError('not found');
res.apiResponse({
post: item
});
// res.json(item);
});
}