Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选

首页 / 软件开发 / JAVA / Ruby on rails开发从头来(windows)(十七)-控制访问权限

Ruby on rails开发从头来(windows)(十七)-控制访问权限2011-12-02 博客园 Cure上次我们实现了登录的页面,现在我们区别管理员和普通用户,根据用户的不同身份,转入到不同的页面

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

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

def authorizeunless session[:user_id]flash[:notice] = "Please log in"redirect_to(:controller => "login", :action => "login")endend
然后在admin.rb文件里AdminController类开始的地方添加一行代码:

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

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

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

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