Posted by Paul McMahon
on 2010年4月9日
Out of the box, Ruby on Rails uses cookies to store a user's
session ID. This is fine for most applications, but doesn't work if
your application needs to support browsers that don't support cookies,
such as some mobile browsers. Instead of putting the session ID in a
cookie, it must be put in the URL. This increases the possibility of
session fixation attacks, where one user can take over another's
session, however if security isn't paramount, this is an acceptable
trade off. See the Ruby on Rails
Security Guide
for more details on these kinds of attacks.
To enable parameter based sessions in Rails, there are a number of
changes you need to make. First, in
config/initializers/session_store.rb, change the default file from
containing something like
ActionController::Base.session = {
:key => '_application_session',
:secret => 'secret'
}
to
ActionController::Base.session = {
:key => '_application_session',
:secret => 'secret',
:cookie_only => false # allow session to be loaded from params
}
# Overwrite default cookie based store
ActionController::Base.session_store = :active_record_store
Now Rails can read the session ID from the URL parameters, and
doesn't store the session in a cookie (the default behaviour). Besides
the ActiveRecord session store, other server based stores, such as the
memcache store, work as well.
In addition to enabling Rails to read the session ID from the URL
parameters, the session ID must be added as a parameter. The most basic
way of doing this is to define default_url_options in the
ApplicationController:
def default_url_options(options = nil)
{ request.session_options[:key] => request.session_options[:id] }
end
This will ensure that the session ID is always set in the URL.
The session ID can also be added conditionally, by doing something
like the following:
def default_url_options(options = nil)
if cookies_supported?
super
else
{ request.session_options[:key] => request.session_options[:id] }
end
end
If the session ID is not included in the parameters, it will fall back
to the cookie.
分享到:
相关推荐
在Rails中使用SSL(安全套接层)是构建Web应用时确保数据传输安全的重要步骤。Rails框架支持在应用程序中轻松集成SSL,以保护用户敏感信息,如登录凭据和支付详情。以下是一些关于在Rails中实施SSL的关键知识点: 1...
这篇博文“rails中使用javascript日期控件”探讨了如何在Rails应用中集成和使用JavaScript日期选择器,以实现更高效、友好的前端交互。 首先,我们需要了解JavaScript日期控件的基本概念。JavaScript是一种在客户端...
标题 "在Rails中使用RSpec生产CHM文档" 暗示了这个话题是关于如何在Ruby on Rails(简称Rails)框架中使用RSpec测试工具来创建帮助文档,特别是以CHM(Microsoft Compiled HTML Help)格式。CHM文件是一种常见的...
7. **哈希与符号化键(Hashes and Symbolized Keys)**:在Rails中,使用符号作为哈希键可以提高性能,因为符号是不可变的,且在内存中只存储一次。 8. **部分视图(Partials)**:部分视图是可重用的视图代码块,...
文章中提到的“控制器与视图间的数据传递方法技巧”主要涉及Rails中如何在控制器和视图之间共享数据。在Rails中,控制器通常会将数据赋值给一个实例变量(如@articles),这个实例变量在视图模板中可以直接访问。...
activerecord-session_store, 从 Rails 中提取的记录存储的活动会话 Active Record 会话存储由 Active Record 类支持的会话存储。 提供了默认类,但是任何对 Active Record 会话类的对象鸭类型都有文本 session_id ...
控制器是MVC架构中的C,它连接模型和视图,处理用户输入,调用模型进行业务逻辑处理,并将结果传递给视图进行展示。 3. **ActionView**:视图部分用于生成HTML输出,显示给用户。Rails提供了一套强大的模板系统,...
为了运行和测试应用,你需要在命令行中使用Rails服务器。在Aptana中,可以使用内置的终端工具。打开“Terminal”视图,输入`rails server`启动服务器,然后在浏览器中访问`http://localhost:3000`查看你的应用。 在...
shoppe-example, 在 Rails 中使用Shoppe平台的示例存储实现 这是一个 Rails 应用程序,它使用 Shoppe 构建。 它具有一个可以爱的设计,以充分演示Shoppe平台提供的功能以及它在 Rails 应用程序中的。 正在启动要开始...
防止恶意用户通过修改URL中的分页参数来访问未授权的数据,确保在控制器中对`params[:page]`进行验证。 以上就是Rails中使用`Kaminari`实现分页的基本流程和注意事项。理解并熟练掌握分页技巧,能够帮助你在开发...
描述中提到的博文链接指向了一个ITEYE博客文章,尽管具体内容未提供,但通常这样的博客可能会包含Rails的使用技巧、最佳实践、新版本更新或者特定问题的解决方案。 标签 "源码" 暗示了可能涉及Rails的源代码分析或...
3. **路由(Routing)**:Rails的路由系统根据URL映射到特定的控制器和动作,定义了应用的导航结构。 4. **测试驱动开发(Test-Driven Development, TDD)**:Rails鼓励使用TDD,提供了Rspec和Capybara等强大的测试...
在“ruby on rails轻松使用”这个主题中,我们可以探讨以下几个关键知识点: 1. **安装Rails**: 首先,你需要确保已经安装了Ruby环境。然后,通过Ruby的包管理器gem来安装Rails。运行`gem install rails`命令即可...
此外,书中还介绍了一些Rails中的高级概念,如Strong Parameters(强参数),它在Rails 4.0版本中引入,用于解决之前版本中的参数篡改问题,从而帮助开发者安全地处理外部提交的数据。 通过一系列的教学内容,包括...
- 安装Rails: 使用gem工具安装最新的Rails版本。 - 测试安装: 创建一个简单的Rails应用来验证是否成功安装。 #### 五、练习作业0-Hello World - **目标**: - 学习如何创建第一个Rails应用程序。 - **过程**: -...
Rails的路由系统将URL映射到控制器的行动上,如`/sign_up`可能对应`users#new`,用于创建新用户。`config/routes.rb`文件定义了所有路由规则,包括资源路由、命名路由和自定义路由。 6. **视图模板**: 视图使用...
6. **erb模板**:Rails中的视图通常使用ERB(Embedded Ruby)模板语言,将HTML与Ruby代码混合,用于动态生成页面内容。 7. **Helper方法**:Rails提供了许多内置助手方法,帮助开发者在视图中处理复杂的逻辑和呈现...
Rails 2.0 API 文档是一个非常宝贵的资源,它为开发者提供了全面的指南,以便于在使用Ruby on Rails 2.0版本时更好地理解和利用其框架功能。Ruby on Rails(简称Rails)是一个开源的Web应用框架,它遵循MVC(模型-...