我们可以使用哪些方法来干净地为 Rails 应用程序中的 API 客户端和普通用户提供访问权限?

发布于 2024-11-03 13:48:50 字数 404 浏览 2 评论 0原文

我们正在构建一个 Rails 3 Web 应用程序,该应用程序需要对访问该网站的常规用户进行授权和身份验证。这些用户还可以使用第三方应用程序通过我们的 API 访问该网站。

我们可以使用哪些方法来有效、干净地向客户端和用户提供访问权限?您在自己的也具有 RESTful API 的 Rails 应用程序中使用了哪些策略?

理想情况下,我们寻求的解决方案是:

  • 与 Devise 和 CanCan(我们已经用于 authn/authz)配合良好
  • 与 Mongoid 配合良好
  • 不会污染我们的控制器
  • 安装和配置相对简单(如果它是 gem 或插件)
  • 如果是一般策略,则很容易测试;或者已经测试过,如果它是 gem 或插件

We're building a Rails 3 web application that will need to authorize and authenticate regular users who visit the site. Those same users may also use third-party applications to access the site via our API.

What approaches can we use to effectively and cleanly provide access to clients as well as users? What strategies have you used in your own Rails applications that also have RESTful APIs?

Ideally, we're after a solution which:

  • plays well with Devise and CanCan (which we already use for authn/authz)
  • plays well with Mongoid
  • doesn't pollute our controllers
  • is relatively simple to install and configure, if it's a gem or plugin
  • is easily testable, if it's a general strategy; or is already tested, if it's a gem or plugin

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

离不开的别离 2024-11-10 13:48:50

由于您已经在使用 Devise,请查看 token_authenticatable 策略(将其添加到您的用户模型并确保 devise init 反映您调用的令牌参数)。

您还需要添加:“before_save :ensure_authentication_token”到您的用户模型中(假设您不希望它是一次性使用的)。

只需在用户的个人资料页面或其他地方提供他们的令牌即可。如果您愿意,可以将其称为 API 令牌。

Since you're already using Devise, take a look at the token_authenticatable strategy (Add it to your user model and make sure the devise init reflects whatever you call the token param).

You'll want to add: "before_save :ensure_authentication_token" to your user model as well (assuming you don't want it to be single use).

Just provide your user's with their tokens on say their profile page or wherever. Call it an API token if you like.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文