`
sharevein
  • 浏览: 1115 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

在Sinatra程序里实现HTTP Digest Authorization

阅读更多
网上没找到相关的文章,在这里发一下。

密码在数据库里明文储存的情况。

require 'rubygems'
require 'sinatra'

class MyAuth < Rack::Auth::Digest::MD5
  def initialize(*args)
    super
    self.opaque = 'this-should-be-secrest'
  end
end

use MyAuth, 'test1' do |username|
  {'admin' => 'admin'}[username]
end

get '/' do
  'Welcome!'
end


如果需要将保存在数据库里的密码加密,需要将其按MD5('username:realm:password')的形式加密,既ha1。

require 'rubygems'
require 'sinatra'
require 'digest/md5'

class MyAuth < Rack::Auth::Digest::MD5
  def initialize(*args)
    super
    self.passwords_hashed = true
    self.opaque = 'this-should-be-secrest'
  end
end

use MyAuth, 'test1' do |username|
  {'admin' => ::Digest::MD5.hexdigest(['admin', 'test1', 'admin'] * ':')}[username]
end

get '/' do
  'Welcome!'
end


中间件Rack::Auth::Digest::MD5必须设置opaque的值才能使用,除了继承我还没找到其他办法。
分享到:
评论

相关推荐

    Sinatra并发性提升扩展Sinatra::Synchrony.zip

    Sinatra::Synchrony允许我们做异步程序,除了那些在Fibers中封装了回调操作的。这让我们能够实现同步程序的同时利用异步代码的优势。除了可以这样简单地变成,它也让我们根据需要可以转换一个不同的并发策略。

    jump star sinatra sinatra教程

    《JumpStart Sinatra》这本书由 Darren Jones 编写,旨在帮助读者在短时间内掌握 Sinatra 的核心概念和技术细节。 #### 二、书籍概述 本书名为《JumpStart Sinatra》,由 SitePoint Pty. Ltd. 出版,版权所有 ©...

    Ruby-Padrino一个构建在Sinatra上的全堆栈ruby框架

    在Ruby社区中,Sinatra被誉为轻量级、简洁的HTTP服务器接口库,而Padrino则是在这个基础上进一步扩展,加入了更多用于构建实际应用程序的功能。 首先,我们来深入了解Ruby-Padrino的核心特性: 1. **模块化结构**...

    PHP版本的Sinatra极其轻量优雅的web领域专用语言框架

    Sinatra在Ruby世界里以其简洁、高效的语法而著名,使得开发者能快速构建Web应用。Pinatra同样致力于提供这样的体验,为PHP开发者提供一种轻量级、面向表达式的Web开发解决方案。 【描述】提到"Sinatra的一个PHP复制...

    sinatra-pubsub, 为 Sinatra 推送&流.zip

    sinatra-pubsub, 为 Sinatra 推送&流 Sinatra::PubSubPubSub是对 Sinatra的扩展,它增加了使用HTML5服务器发送事件的基本发布/订阅流。例如客户端可以订阅以下事件:var es = new EventSource('/subscribe

    almost-sinatra, Sinatra 重构,现在只有六个行 比一双袜子更受欢迎.zip

    almost-sinatra, Sinatra 重构,现在只有六个行 比一双袜子更受欢迎 几乎 Sinatra "until programmers stop acting like obfuscation is morally hazardous,they're not artists, just kid

    examples-sinatra:示例 Sinatra 应用程序的存储库,说明了 Web 开发中的常见模式

    当前示例authentication目录包含一个示例 Sinatra 应用程序,它实现了基本的用户身份验证,即注册、登录和注销。public-file-upload目录包含一个示例 Sinatra 应用程序,该应用程序实现了一个基本的照片库,以演示...

    sinatra-template-源码.rar

    在"sinatra-template-源码.rar"这个压缩包中,我们有机会深入理解Sinatra的工作原理及其模板引擎的实现。 一、Sinatra基础 1. 微型框架:Sinatra的初衷是创建一个小型、可嵌入的HTTP服务器,它的核心思想是通过DSL...

    sinatra-bootstrap:一个简单的Sinatra起点

    这个rake命令为您在后台运行bundle exec shotgun config.ru ,并在Sinatra的默认端口9393上启动该应用程序,现在将可以在您的Web浏览器中通过以下URL 查看该应用程序。 您还需要在同一个目录中打开一个新的终端窗口...

    kibana-sinatra:Kibana 3 打包为 Sinatra 应用程序

    目前,我不确定将该服务器封装在 Sinatra 或 Rack 应用程序中是否可行。 也许会更新和处理它? 与此同时,我一直在 Docker 容器中运行该应用程序: 安装 将此行添加到应用程序的 Gemfile 中: gem 'kibana-...

    real-world-sinatra:真实世界Sinatra应用程序及其开放源代码库,供开发人员学习

    您可以在子目录中找到Real World Sinatra应用程序的源代码。 感谢所有开发此回购链接的项目的开发人员,您的工作正在帮助开发人员学习Sinatra。 如何在电脑上安装 # Clone this git repo: git clone git@github....

    sinator:Sinatra应用程序生成器

    它将以最小的配置生成Sinatra应用程序。 这个项目背后的原因是因为我想创建许多基于sinatra的小型Web应用程序,并以其他第三方的ruby gems为基础。 特征 生成没有数据库的基于Sinatra的Web应用程序 使用PostgreSQL...

    nginx-puma-sinatra:示例展示了如何使用 Puma 和 Nginx 部署一个简单的 Sinatra 应用程序

    示例展示了如何使用 Puma 和 Nginx 部署一个简单的 Sinatra 应用程序。 动态内容通过 Puma 提供,而静态内容通过 Nginx 提供。 git clone https://github.com/p8952/nginx-puma-sinatra.git ~/nginx-puma-sinatra ...

    sinatra_app_template:Sinatra 应用程序模板

    Sinatra 应用程序模板 这是一个应用程序模板。 模板定义 /app.rb 应用程序入口点。 该文件定义了由 Rack 运行的 Sinatra 应用程序。 这里配置了环境,应用程序运行需要所有必要的文件和 gem。 此外,还执行初始化...

    lightest-sinatra-app-for-heroku:最轻量的Sinatra应用程序,用于Heroku部署

    适用于Heroku部署的最轻量级Sinatra应用程序模板 关于这个程序 这是用于heroku部署的最轻量级Sinatra应用程序。 该应用程序实现: 苗条的 萨斯 CoffeeScript 您可以立即使用此模板启动应用程序! 有两个版本。 ...

    Ruby-Sinatra-SampleApp:Ruby + Sinatra + Sequel的示例应用程序

    **Ruby-Sinatra-SampleApp** 是一个基于Ruby编程语言,使用Sinatra框架和Sequel数据库库构建的示例应用程序。这个项目旨在提供一个简洁的起点,帮助开发者了解如何使用这些技术来创建轻量级、高效的Web应用。下面将...

    sinatra-decorator:Sinatra应用程序的装饰器

    在您的Sinatra应用程序中添加一个面向对象的表示逻辑层。 安装 将以下内容添加到您的Gemfile : gem 'sinatra/decorator' 然后执行: $ bundle 例子 # app.rb require 'sinatra' require 'slim' require '...

    server-notifications-sinatra:使用 Twilio 和 Sinatra 通过短信实现服务器通知

    在此示例中,我们将向您展示如何在 Web 应用程序中发生错误时向人员列表发送 SMS 通知。 本地开发 该项目是使用框架构建的。 首先克隆这个存储库并cd到其中。 git clone git@github....

    respire:我姐姐网站的Sinatra应用程序

    Respire:我姐姐网站的Sinatra应用程序 Respire是一个基于Sinatra框架构建的Web应用程序,专为个人或小企业设计,可能用于展示、分享或管理特定内容。Sinatra是Ruby编程语言中的一个轻量级、模块化的Web开发框架,...

    remotr:一个 Sinatra 应用程序,可通过 Keynote 幻灯片实现远程导航

    概述在 Ruby 中运行,使用 Sinatra 和 AppleScript,remotr 是一个简单的应用程序,旨在简化演示。先决条件基调Ruby(推荐使用 bundler,但不需要)设置为了让应用程序运行,您可以通过执行以下命令来设置它: $ git...

Global site tag (gtag.js) - Google Analytics