【问题标题】:Ruby Sinatra - Protecting routes with authenticationRuby Sinatra - 通过身份验证保护路由
【发布时间】:2013-03-27 02:48:48
【问题描述】:

我有一个 Ruby 类,它基本上对 LDAP 目录的用户进行身份验证,如下所示。 DirectoryUser 类正在使用 net/ldap gem 来执行此操作。调用该类时,如果用户已通过身份验证,则返回“true”,否则返回“false”。

>>DirectoryUser.authenticate('user', 'password')
  #True

我想在一个基本的 Sinatra 应用程序中为多个用户使用这种机制来保护我的路由。

  1. 是否有推荐的遵循最佳实践的方法来执行此操作?
  2. 有人能说明如何实现吗?

我想在允许访问路由之前设置一个变量并检查变量的状态。但是,我不禁想到这里可能会遗漏一些安全隐患!

【问题讨论】:

    标签: ruby authentication routes sinatra


    【解决方案1】:

    Sinatra FAQ.

    基本上,您需要创建一个帮助方法,如果用户未通过身份验证,该方法将引发异常。

    【讨论】:

    • 是的,我确实看到了——但它似乎只指基于 HTTP 的身份验证。我将创建一个表单来获取“用户”和“密码”值,然后将其直接传递给 DirectoryUser 类。我不确定我是否可以使用相同类型的辅助方法来做到这一点!
    • 好的,听起来您需要会话。这个站点有一些关于如何将身份验证合并到会话中的重要信息:128bitstudios.com/2011/11/21/authentication-with-sinatra
    • 嗯 - 仍然有问题让这个离开地面 - 肯定有人以前这样做过!我查看了上面的链接,但它似乎还有很多其他的事情要做。我只需要一种基本方法来根据通过 DirectoryUser 类进行身份验证的用户来控制对我的路由的访问!
    【解决方案2】:

    由于您已经在使用 LDAP 库进行身份验证,因此最佳做法是使用 Warden 之类的内容进行授权。我们使用多种身份验证方法(基本身份验证、twitter 身份验证、LDAP 身份验证)很好地利用了这个应用程序。

    【讨论】:

      猜你喜欢
      • 2021-12-16
      • 2020-05-10
      • 1970-01-01
      • 2021-11-07
      • 1970-01-01
      • 2018-07-30
      • 2023-04-08
      • 2013-12-11
      • 1970-01-01
      相关资源
      最近更新 更多