Keystone CMS Rest API身份验证

时间:2017-05-11 12:09:00

标签: javascript openstack keystonejs

所以我是keystone CMS的新成员,它看起来很棒我 我已经设置了基本结构并使用了keystone提供的默认博客项目,所以现在我正在尝试为我的管理员构建其余的API 由于其他API工作正常,当我在keystone管理面板中的浏览器中,但当我测试相同的邮递员甚至在设置基本身份验证后它给我HTML页面 我不知道这有什么不对,以及如何正确设置这件事。​​

这是我在index.js

中的代码
    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于11/5/17创建。       * /        var async = require('async'),        keystone = require('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);
    });

 }

我一直在努力让这件事从最后一天开始,但直到现在都无法工作 请指导我。

0 个答案:

没有答案