2013-04-25 192 views
0

应用程序有很多测试,问题是只有经过身份验证的用户才能查看它们。因此,如果没有,应用会将它们重定向到sing_in/login_as_guest页面。例如,用户唱歌或作为访客登录,之后我想将它们重定向到他们实际要访问的网页。 但是我不知道从哪里开始,这可能吗? 能否请你给我从哪里开始的关键·R重定向之前的跟踪请求

+0

你正在使用什么测试框架以及什么认证系统? – 2013-04-25 22:46:24

+0

是的,用户可以通过FB或电子邮箱/密码进行身份验证或作为临时客人 – 2013-04-25 22:52:30

回答

0

这里是一个逐步指南例如:

class UserController < ApplicationController 
    def login 
    if User.authenticate(params[:user][:email], params[:user][:password]) 
     referer = params[:referer] || session[:referer] || request.referer 
     flash.notice = 'Login succeeded' 
     redirect_to referer || root_path 
    else 
     flash.alert = 'Login failed' 
     redirect_to user_login_path 
    end   
    end 
end 

现在,当你要重定向从什么地方回来,只需添加一个引荐通道连接到设置了一个param,会话或请求,它会重定向回成功。

0

结束第5章和章节6,7,8,9是一步的,你需要究竟是什么 rails tutorial

+0

不,朋友,只给5个章节很难成为正确答案 – 2013-04-25 22:57:18

0

好吧,我发现了简单的解决方案,对我来说工作得很好。应用控制:

if @current_permission.allow?(params[:controller], params[:action]) 
     return true 
     else 
     redirect_to root_url 
     session[:was_going]=request.path #here I start session if request causes redirection 
     end 
    end 

此方法返回的请求,如果它存在

def root_or_request 
    if session[:was_going] 
    path=session[:was_going] 
    session[:was_going] = nil 
    return path 
    else 
    return root_url 
    end 

    end 

而不是启动会话后,我只是调用这个方法重定向。