`
shaorui23
  • 浏览: 22214 次
  • 性别: Icon_minigender_1
  • 来自: 惠州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Rails Digest认证实现和原理

 
阅读更多

优势

Http Digest是一种Http(不仅限于Web页面)认证框架,相比通常使用的基本认证,Digest认证的优点是相对安全、基于网络标准和简单,它不需要编写登录表单页面,对登录信息进行加密,这样就可以很好的支持较安全的程序自动连接(非浏览器连接),可以广泛的应用到数据服务领域。

实现

在Rails中实现Http Digest认证是非常简单的,有两个步骤:

1. 在控制器中配置一个before_filter过滤器,指向验证方法

2. 定义一个验证方法,使用authenticate_or_request_with_http_digest 语句块就可以了

实现代码如下

# 定义before_filer过滤器,指向验证函数

before_filter :dig_auth

# 在此处定义了密码数字,当然也可以用数据库或者自己定义的验证函数

USERS = { "yanjh" => "hello","shixc" => "hello" }

Realm="cdcr.com"

# 验证方法

def dig_auth

authenticate_or_request_with_http_digest(Realm) do |name|

# 当前验证的用户,预先赋给一个会话变量

@cuser=name

# 向语句块(认证系统)返回用户密码,由系统判断该密码匹配,通过验证后续的方法会执行,否则返回验证失败头信息

USERS[name]

end

end

原理

在网络上基本上没有人探讨该认证方式实现的原理,经过实验和分析,大体搞清楚了Digest验证的原理。

通常验证我们会直接从认证请求中获得用户名和密码,然后自己判断匹配性;但在这里我们只能获取用户名,然后我们可以依据此用户名在外部查找密码(明文或者md5密文都可以),返回给认证系统,再次注意,这里返回的是密码!再由系统来判断是否匹配,这样虽然逻辑上有点古怪,但将认证密码传输和解析黑箱化,确实更安全了。

原文链接:http://hi.baidu.com/yan__jh/blog/item/2f263100df2077f509fa93a7.html

分享到:
评论

相关推荐

    Struts2和Rails的国际化实现

    总结来说,Struts2和Rails的国际化实现都是基于资源文件,并通过特定的API或辅助方法在代码中引用这些资源。它们都考虑了会话和请求的上下文来自动选择合适的语言,并提供了手动切换语言的能力。尽管实现方式有所...

    Ruby-Knock为RailsAPI实现无缝JWT身份验证

    通过理解JWT的工作原理和如何使用Knock,开发者可以构建更健壮、更安全的RESTful API服务。在提供的压缩包文件`nsarno-knock-03090f8`中,可能包含了Knock库的源代码、示例、文档或其他资源,这些都可以帮助进一步...

    Rails 101 入门电子书

    - 如何在Rails中实现RESTful接口。 - **案例分析**: - 分析一个典型的RESTful应用示例。 #### 九、练习作业2-在Group里面发表文章-双层RESTFul - **目标**: - 在Group中添加Post功能。 - **实现过程**: - 创建...

    Rails项目源代码

    这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何利用Rails的强大功能来创建一个允许用户上传、分享和浏览图片的应用。 1. **Rails框架基础**: Rails的核心理念是DRY(Don't...

    Rails 101S

    ### Rails 101S: 初学者必备的Ruby on Rails 宝典 #### Introduction: 深入了解Ruby on Rails ...无论是想快速搭建一个网站原型还是深入了解Rails的工作原理,《Rails 101S》都将为你提供宝贵的指导和支持。

    component base rails applications

    在掌握了以上知识点后,开发人员能够更加系统地了解如何利用Rails Engine来实现模块化的Rails应用,从而提高代码的复用性、可维护性和扩展性。通过拆分成组件,还能让团队分工更加清晰,提高开发效率,减少代码间的...

    关于rails 3.1 cucumber-rails 1.2.0

    Rails 3.1 和 Cucumber-Rails 1.2.0 是两个在Web开发领域非常重要的工具,尤其对于Ruby on Rails框架的测试和自动化流程。本文将深入探讨这两个组件,以及它们如何协同工作来增强软件开发的效率和质量。 首先,...

    Rails101_by_rails4.0

    《Rails101_by_rails4.0》是一本专注于Rails 4.0.0版本和Ruby 2.0.0版本的自学教程书籍,它定位于中文读者,旨在成为学习Rails框架的参考教材。Rails(Ruby on Rails)是一个采用Ruby语言编写的开源Web应用框架,它...

    rails2.3.2

    开发者可以通过解压这个文件,进一步了解 Rails 框架的结构和工作原理。 Ruby on Rails 2.3.x 版本包含了多个重要的特性,例如: 1. Active Record:这是 Rails 的 ORM(对象关系映射)层,负责处理数据库交互。在...

    关于Rails登录和验证插件http_authentication restful-authentication

    在Rails应用中,用户认证和授权是常见的需求,用于保护应用资源的安全。"http_authentication"和"restful-authentication"是两个早期的Rails登录和验证插件,它们为Rails应用提供了基本的身份验证功能。 HTTP基本...

    Rails

    Rails是开源的,开发者可以深入研究其内部机制,理解工作原理,甚至为框架贡献代码。 标签 "工具" 可能意味着讨论到了与Rails开发相关的工具,如集成开发环境(IDEs)、包管理器(如Bundler)、测试框架(如RSpec和...

    Rails进行敏捷Web开发(所有版本的源码rails3.0-4.0)

    每个版本的源码都是学习Rails框架内部工作原理的宝贵资源。通过对比不同版本的源码,开发者可以深入理解Rails如何逐步演进,如何处理性能、安全性和可维护性等问题。同时,这也能帮助开发者更好地适应Rails的新特性...

    RailsGuides中那个blog程序源码

    RailsGuides中的"blog"程序是一个典型的入门级示例,旨在帮助初学者理解RoR的工作原理和核心概念。 在Rails中,**模型(Model)** 负责处理数据和业务逻辑,通常与数据库交互。在这个"blog"程序中,可能会有一个`...

    rails2-sample

    这一章节将介绍如何在Rails应用中集成Ajax技术,实现更加交互式的用户体验。同时,还将探讨Web 2.0的概念,包括社会化网络、用户生成内容和实时数据流等。 #### 8. Protective Measures(防护措施) 网络安全是...

    Apress - Practical Rails Projects (Oct 2007)

    接着,书中会讲解Rails的基本组件,如路由(Routes)、控制器(Controllers)、模型(Models)和视图(Views),以及ActiveRecord ORM(对象关系映射)的工作原理。 在模型部分,你将学习如何定义数据库模型,使用...

    中文版rails教程

    Ruby的语法优雅,支持块、闭包和元编程,这使得Ruby在编写Rails应用时能够实现高度的灵活性和可扩展性。 **Rails框架核心组件** 1. **模型(Model)**:模型是应用的核心,负责处理数据和业务逻辑。ActiveRecord是...

    RailsSpace

    本章将详细介绍Ajax的工作原理及其在Rails中的具体应用。 #### 六、后续发展 ##### 6.1 未来发展方向 第十七章“What next?”展望了RailsSpace项目的发展方向,提出了可能的改进方案和扩展功能,鼓励读者根据自己...

Global site tag (gtag.js) - Google Analytics