【问题标题】:Can we declare two strategies in passportjs?我们可以在passportjs中声明两个策略吗?
【发布时间】:2019-10-01 12:54:19
【问题描述】:

我在 mongoose 中有管理员和用户模型。我必须对路由进行授权(访问控制)。问题是我们是否可以为管理员和用户制定两种护照策略,并在用户和管理员路由中使用它们。这样,用户将无法进入管理员路由。

这个解决方案好还是有其他更好的方法

【问题讨论】:

  • 你的意思是使用两种不同的策略(比如本地和推特)还是两种重复的策略(两个本地)?
  • 两个本地人,一个查找用户数据库,另一个查找管理员数据库。这两种策略都将在后续用户和管理员路由中使用以进行授权。我们可以这样做吗>

标签: node.js role-base-authorization


【解决方案1】:

如果我正确理解了您的问题,您想在允许用户访问路由之前验证用户是管理员还是普通用户,对吗?

您可以创建一个中间件,在移动到控制器之前检查用户角色。

而且,是的。您可以创建不同的策略,但为了您的目标,您应该考虑包含一个中间件来根据用户的角色对其进行授权。

【讨论】:

  • 因此,将用户角色存储在数据库中是否可行?例如对于每个用户有类型(普通用户或管理员)?但为此,我们将获取用户 2 次。一个在中间件中检查角色。和passport.js中的另一个
  • 是的。普通用户和管理员用户仍然是一种资源,只是具有不同的角色/权限。因此,基本上,您可以在 Passport.js 上使用一种策略,并验证尝试访问该路由的用户是否有权这样做。自从我使用 Passport.js 已经有一段时间了,但如果我没记错的话,它可以用作身份验证/授权的中间件。所以基本上,您只需要一种策略来检查授权用户角色。
猜你喜欢
  • 2014-06-03
  • 1970-01-01
  • 2022-01-09
  • 2020-07-27
  • 1970-01-01
  • 2011-05-14
  • 1970-01-01
  • 2020-08-04
  • 2016-02-29
相关资源
最近更新 更多