Ruby on rails开发从头来(windows)(十七)-控制访问权限

上次我们实现了登录的页面,现在我们区别管理员和普通用户,根据用户的不同身份,转入到不同的页面

在rails中提供了filter来截获访问某个action的请求,可以用filter在action被调用前或调用后添加我们自己的处理。在这里,我们在admin的controller中的action被调用前添加拦截器。如果是管理员,就进入管理页面,如果是普通用户,就进入登录页面。

1.在application.rb中给ApplicationController类添加authorize方法,代码如下:

def authorize
unless session[:user_id]
flash[:notice] = "Please log in"
redirect_to(:controller => "login", :action => "login")
end
end

然后在admin.rb文件里AdminController类开始的地方添加一行代码:

class AdminController < ApplicationController
before_filter :authorize
……

这样,我们就添加了一个拦截器,现在,AdminController中所有的action被调用前都会先调用authorize方法。

我们还要修改login_controller.rb文件,给LoginController里添加一句代码:

class LoginController < ApplicationController
before_filter :authorize, :except => :login
……

2.现在,我们如果直接访问http://localhost:3003/admin/ship,将会直接定位到login页面,并且提示先请登录。如图:

如果之前已经登录过,因为session还存在,所以不会看到效果,只要把浏览器关掉才重新定位admin/ship页面就可以了。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索登录
, 页面
, action
, 拦截器
, 定位权限
, 登录拦截器
, admin
, 拦截器 访问控制
, Authorize
权限拦截器
ruby on rails、ruby on rails 教程、ruby rails、ruby on rails pdf、ruby on rails 5 教程,以便于您获取更多的相关知识。

时间: 2024-10-29 12:55:46

Ruby on rails开发从头来(windows)(十七)-控制访问权限的相关文章

Ruby on rails开发从头来(windows)(四)-第一个添删查改例子

在上一篇Ruby on rails开发从头来(windows)(三)-实现页面间的跳转中,我们创建了两个页面来进行跳转迁移,这次我们来写一个单表维护的添删查改的例子. 1.这次我们重新创建一个项目depot,按照上篇中的步骤,创建depot项目. 2.创建数据库. 你可以使用rails的命令行,通过mysql创建,先定位到depot目录,使用命令: depot> mysql -u root –p 密码为空,连接mysql后执行下面的命令: mysql> create database depo

Ruby on rails开发从头来(windows)(三)-实现页面间的跳转

在上篇随笔Ruby on rails开发从头来(windows)(二)-创建项目和第一个Hello world 中,我们介绍了如何使用InstantRails创建一个项目和编写一个简单的Helloworld页面,今天在上次的基础上,写一个简单的页面跳转. 1.将appcontrollers目录下的say_controller.rb文件的内容改成下面这样: class SayController < ApplicationController def Hello @time = Time.now

Ruby on rails开发从头来(windows)(一)

使用InstantRails快速搭建Ruby On Rails开发环境 一直对Ruby on Rails抱有很大的兴趣,想看看这个被很多人称道的东西,但是一直在做windows下的开发,对于Ruby on Rails的开发环境搭建还是很头疼,这也是一直没有开始研究Ruby on rails的原因.刚刚在javaeye看到了InstantRails,一个All In One的套件,可以帮助你快速搭建Ruby On Rails开发环境,就立即下了一个试了试,还好,比较顺,起码可以跑起来自带的例子了.

Ruby on rails开发从头来(windows)(二十七)- 测试驱动开发

在敏捷开发的实践中,测试驱动是少不了的.这篇来看看在rails中的一个测试驱动开发的例子. 在前面我们编写并进行了一些单元测试和功能测试,现在,我们的客户突然要求添加一个功能:系统的每个用户都可以对商品进行查询. 我们先初步的画了一些草图,来整理我们的思路和设计,然后开始写代码.对于具体的实现,我们已经有了大致的思路,但是如果有更多的反馈信息的话会有助于我们走在正确的道路上.我们会在深入到代码之前,编写测试代码.考虑我们的代码将怎样工作,确定一些规约,当测试通过,你的代码就OK了. 现在,我们来

Ruby on rails开发从头来(五十七)- ActiveRecord基础(多对多关联关系)

在Rails中多对多关联通过在关联表对应的类中声明has_and_belongs_to_many来实现. 在数据库中,多对多关联使用中间表来实现,表中包括关联表的主键,Active Record假定这个中间表的名字是由关联表的名字根据字母的顺序串联起来得到的.例如,关联表为categories和products,中间表的名字就是categories_products. 开发从头来(五十七)- ActiveRecord基础(多对多关联关系)-rails activerecord"> 注意我们

Ruby on rails开发从头来(windows)(十八)-自动生成文档

到此,我们这个购物车的实现就完成了,下面我们可以利用ruby里的Rdoc来给我们的程序生成文档,和dotnet,java,python等一样,Rdoc可以把我们代码里类和方法声明前面的注释提取出来生成文档. 对于我们的depot程序,我们在rails的命令行里运行rake appdoc命令,如图: 开发从头来(windows)(十八)-自动生成文档-ruby on rails"> 完成以后,可以在depot\doc目录下看到刚才生成的文档,打开index.html,看到下面的内容:

Ruby on rails开发从头来(windows)(十五)-添加用户

从这篇开始,我们来实现一组用户管理的功能,首先是添加用户. 1.首先,我们要创建一个表保存用户信息,并且生成一个对应的model. 创建表的脚本,在phpAdmin里执行就可以了: create table users ( id int not null auto_increment, name varchar(100) not null, hashed_password char(40) null, primary key (id) ) 然后在命令行生成User的model,如图: 开发从头来

Ruby on rails开发从头来(windows)(十三)-订单(Order)

在上次的内容里,我们编写了CHECKOUT的处理.这次我们将显示购物车和订单放在一个页面上表示,这样用户在下订单的时候就可以很方便地看到自己的购物情况. 1.修改checkout.rhtml文件,只要添加一句代码: <%= error_messages_for("order") %> <%= render_component(:action => "display_cart") %> ――这句 <%= stylesheet_lin

Ruby on rails开发从头来(windows)(十二)-订单(Order)

在上次的内容里,我们创建了订单的Model,和表示页面,这次继续编写CHECKOUT的处理. 1.在checkout.rhtml的页面上,有一个CHECKOUT按钮,上次还没有给它编写处理代码,现在在store_controller中添加save_order方法,代码如下: def save_order @cart = find_cart @order = Order.new(params[:order]) @order.line_items <<@cart.items if @order.s