HapiJS中基于角色的身份验证
Role based authentication in HapiJS
我正在研究一个用HapiJS编写的rest API第一个项目。登录过程结束后,用户将获得一个令牌,以传入每个请求的标头。用户具有不同的角色(管理员、标准、来宾、合作伙伴),并且某些 API 终结点只能由具有特定角色的用户访问。有人可以帮助我以一种很好的方式定义这个检查,所以不用每次在路线内写支票?
作用域
你可以在快乐中使用scopes
。通过检查标头对请求进行身份验证时,可以设置用户凭据的 scope
属性:
var validateFunc = function (username, password, callback) {
... // Your logic here
return callback(null, true, {scope: 'admin'});
};
定义路由时,可以在 config.auth.scope
属性中设置允许该终结点scopes
:
server.route({
...
config: {
auth: {
strategy: 'simple',
scope: ['user', 'admin']
},
}
...
});
现在,只有通过 user
或 admin
范围进行身份验证的用户才能访问该路由。
过程
- 确定一些范围(管理员、超级用户、来宾等)
- 配置身份验证例程以正确设置用户凭据的
scope
- 通过将
config.auth.scope
设置为允许访问路由的任何人来配置路由
可运行示例
var Hapi = require('hapi');
var server = new Hapi.Server();
server.connection({ port: 4000 });
server.register(require('hapi-auth-basic'), function (err) {
if(err) {
throw err;
}
server.auth.strategy('simple', 'basic', {
validateFunc: function (username, password, callback) {
if (username === 'admin') {
return callback(null, true, {scope: 'admin'}); // They're an `admin`
}
if (username === 'user') {
return callback(null, true, {scope: 'user'}); // They're a `user`
}
return callback(null, false);
}
});
server.route([{
config: {
auth: {
strategy: 'simple',
scope: ['admin'] // Only admin
},
},
method: 'GET',
path: '/admin',
handler: function(request, reply) {
reply('Admin page');
}
}, {
config: {
auth: {
strategy: 'simple',
scope: ['user', 'admin'] // user or admin
},
},
method: 'GET',
path: '/user',
handler: function(request, reply) {
reply('User page');
}
}
]);
server.start(function () {
console.log('Started server');
});
});
相关文章:
- Sencha Touch和远程服务器上的身份验证
- Javascript清除缓存以清除基本身份验证凭据
- REST的面向公众的身份验证机制
- 当需要身份验证时,ui路由器不会重定向
- 使用Facebook登录,但仍然可以获得:“;此标识池不支持未经身份验证的访问“;
- AJAX HTTP基本身份验证解决方案
- 身份验证后获取Facebook图片
- 如何对单个页面进行密码保护(这不是身份验证系统的一部分)
- Twitter应用程序专用身份验证
- Passport.js成功的身份验证根本没有调用
- 通过JavaScript访问需要身份验证的页面
- UIWebview赢得't通过基本身份验证加载动态加载的资源(通过jQuery mobile)
- 使用JavaScript捕获基本身份验证凭据
- javascript中的Spotify身份验证
- ServiceStack JavaScript服务器事件客户端的身份验证
- Twitter API 1.1无法对您2进行身份验证
- javascript api,用于在第三方域上存储身份验证令牌
- HapiJS中基于角色的身份验证
- 可以通过这种方式对用户进行角色身份验证
- Angular2路由可以使用用户角色参数激活和身份验证(JWT)