Sails.js:同时应用会话和令牌认证策略

时间:2018-02-13 09:02:20

标签: session authentication merge sails.js token

我正在使用sails.js开发一个应用程序。对于Web应用程序,我使用带护照的会话身份验证。现在我还需要从移动应用程序制作我的服务器accessibe,这需要令牌认证。我的问题如下:如何定义策略以使sails接受某些路由的SessionAuth或TokenAuth?

1 个答案:

答案 0 :(得分:1)

sails处理策略的方式,使用AND逻辑一个接一个地应用它们。没有办法以其他方式逻辑地组合它们,如OR或更复杂的组合。

在您的情况下,我希望在一个策略中编写处理“SessionAuth或TokenAuth”的第三个策略会相当容易。假设您的现有SessionAuth.jsTokenAuth.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'],
}

实际检查可能更复杂,但可能不是很多。希望这会有所帮助。

相关问题