上次我们实现了登录的页面,现在我们区别管理员和普通用户,根据用户的不同身份,转入到不同的页面
在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 教程,以便于您获取更多的相关知识。