我正在使用 Sinatra 用 Ruby 编写一个 Web 应用程序。该应用程序将有许多受限制的路由,未经身份验证的用户将不允许访问这些路由。我正在使用 Warden 进行用户身份验证。它适用于验证单一类型的用户。但是,我希望用户具有不同级别的访问权限。(目前我希望至少能够区分普通用户和管理员。)我想这是一个常见的要求,但我找不到任何关于如何在 Sinatra 中实现它的指导。在 Sinatra(或更一般的 Ruby)中是否有基于角色的身份验证/权限的“标准”gem 或方法?
我知道用于 rails 的 cancan gem(在 Sinatra 中不可用)和 sinatra-can gem(自 2011 年以来未维护)。我还阅读了 Warden 中有关“范围”的概念。似乎它们可能是我需要的,但从 Warden 文档中不清楚它们是否/如何解决我的问题。