我正在使用sails.js开发一个应用程序。对于Web应用程序,我使用带护照的会话身份验证。现在我还需要从移动应用程序制作我的服务器accessibe,这需要令牌认证。我的问题如下:如何定义策略以使sails接受某些路由的SessionAuth或TokenAuth?
答案 0 :(得分:1)
sails处理策略的方式,使用AND逻辑一个接一个地应用它们。没有办法以其他方式逻辑地组合它们,如OR或更复杂的组合。
在您的情况下,我希望在一个策略中编写处理“SessionAuth或TokenAuth”的第三个策略会相当容易。假设您的现有SessionAuth.js
和TokenAuth.js
政策如下所示:
module.exports = function(req, res, next) {
if (req.isSessionAuthorized()) {
return next();
}
// handle rejected request
};
,和,
module.exports = function(req, res, next) {
if (req.isTokenAuthorized()) {
return next();
}
// handle rejected request
};
然后,您只需创建一个名为SessionOrTokenAuth.js
的第三个策略:
module.exports = function(req, res, next) {
if (req.isSessionAuthorized() || req.isTokenAuthorized()) {
return next();
}
// handle rejected request
};
然后将新创建的策略应用于/config/policies.js
:
SomeController: {
'*': true,
'sessionOnlyEndpoint': ['SessionAuth'],
'tokenOnlyEndpoint': ['TokenAuth'],
'anyAuthEndpoint': ['SessionOrTokenAuth'],
}
实际检查可能更复杂,但可能不是很多。希望这会有所帮助。