模型动作的Sails.jsauthentication
我正在制作一个具有不同访问级别的API,“客户端”只能读取。 但“pipe理员”必须有写权限。 在Sails.js中,每次检查不同的angular色作为策略,并在req.session中设置权限。
我只需要给“客户端”无权创build,更新和删除操作,因此我创build了一个控制器,具有这些CRUD操作,并检查用户是否有正确的angular色。 所有限制访问的操作都通过routes.jsredirect到此控制器。
现在我的问题是,当我删除一个条目,如:Category.destroy(req.param('id')); 给我没有定义,并没有完成的方法。 不像文中提到的,我通过创build这个来解决这个问题:
var deleted = Category.destroy(req.param('id'), function(err, status) { if (status == 1){ res.json({message: 'Category is deleted'}); } else { res.json({message: 'Oops, something went wrong'}); } });
但是必须有另一种方式来对这些基本操作进行身份validation。 因为现在我必须写下所有的动作。
我写的删除函数的代码有问题吗? 是否可以应用策略并redirect到默认的模型操作,就好像根本没有authentication一样?
您可以在Models
或Controllers
级别定义策略。 这里是/config/policies.js
的一个例子。
module.exports.policies = { // Default policy (allow public access) '*': true, 'events': 'eventsPolicy', // Policy for a Model someController: { // Policy for a Controller // Apply the "authenticated" policy to all actions '*': 'authenticated', // For someAction, apply 'somePolicy' instead someAction: 'somePolicy' } };
在api/policies
下,您可以定义访问级别。
module.exports = function (req, res, next) { if (req.session.user) { var action = req.param('action'); if (action == "create") { req.body.userId = req.session.user.id; req.body.username = req.session.user.username; } next(); } else { res.send("You're not authenticated.", 403); } };
希望这可以帮助。
刚刚修改了所有重命名控制器的策略,如de CLI中所述:'sails generate model example'给出了关于被命名为单数的控制器的通知。 所以我不需要将所有模型动作redirect到复数控制器(示例)。 现在所有的基本的CRUD操作都是按照它应该的方式工作的。
sails.jsvideo教程帮了我很多忙: http : //www.youtube.com/watch? feature=player_embedded&v=GK-tFvpIR7c
我的猜测(不是一个Sails用户本人)将是你传递一个callback, 或者你会得到一个有一个done()
方法的对象:
Category.destroy(id, function(...) {...}); // method 1 Category.destroy(id).done(function(...) {...}); // method 2
- Node + Express:根据页面和用户types的多种authentication策略
- 通过Github进行身份validation(使用everyauth)
- 使用nano插入用户时,CouchDB会抛出“404丢失”错误
- 将非用户字段添加到有效内容以用于JWT令牌
- Facebook或Twitterauthentication与iPhone客户端和node.js服务器
- 在passport.js或session中的某处添加用户对象中的额外信息
- 在iOS / Node应用程序中使用google / twitter / linkedInauthentication
- 通过我的REST API和Facebook进行用户身份validation
- 会话身份validationtypes错误:对象#属性“types”<ServerResponse>不是函数