将findOne包装在sails.js用户控制器中,使其成为findMe

将findOne包装在sails.js用户控制器中,使其成为findMe,sails.js,Sails.js,我想创建一个新的端点“/user/me”,以调用名为findMe(req,res)的用户控制器上的操作。我希望它的行为与blueprint“/user/:id”几乎相同,它路由到findOne(req,res),只是它将根据登录用户的id(登录后存储在req.session中)返回当前用户的数据 是否有一种简单的方法来编写findMe,以便它可以将用户ID传递给findOne,并将所有剩余的请求处理留给核心sails findOne操作 我不希望直接在用户模型上使用findOne方法,而是希望在

我想创建一个新的端点“/user/me”,以调用名为findMe(req,res)的用户控制器上的操作。我希望它的行为与blueprint“/user/:id”几乎相同,它路由到findOne(req,res),只是它将根据登录用户的id(登录后存储在req.session中)返回当前用户的数据

是否有一种简单的方法来编写findMe,以便它可以将用户ID传递给findOne,并将所有剩余的请求处理留给核心sails findOne操作

我不希望直接在用户模型上使用findOne方法,而是希望在用户控制器上使用findOne,因为它有额外的好处,比如尊重?polulate=。。。参数等。也就是说,告诉我这是否是个坏主意。我有点担心安全问题——恶意用户能否通过伪造的/user/me请求获取其他用户的数据

在其他环境中,我称之为服务器端重定向(不同于客户端重定向/30x)

谢谢
Adam

您完全可以从控制器访问蓝图。如果将用户id存储在会话中为
req.session.user.id
,则会这样做:

// UserController.js

module.exports = {

  me: function (req, res) {
    req.params.id = req.session.user.id;
    return sails.hooks.blueprints.middleware.findone(req, res);
  }

};
但是,这将不允许您使用其他参数,例如
填充


我个人认为,您应该实施自己的操作,因为这样做不会太复杂,更容易保护请求。

您完全可以从控制器访问蓝图。如果将用户id存储在会话中为
req.session.user.id
,则会这样做:

// UserController.js

module.exports = {

  me: function (req, res) {
    req.params.id = req.session.user.id;
    return sails.hooks.blueprints.middleware.findone(req, res);
  }

};
但是,这将不允许您使用其他参数,例如
填充

我个人认为你应该实施你自己的行动,因为这样做不会太复杂,更容易获得请求。

你能帮我吗