Before_filter认证功能

时间:2011-06-19 09:04:49

标签: ruby-on-rails-3 before-filter

我正在使用Rails 3开发API。我已经完成了自己的身份验证逻辑,并使用名为authenticate_user的before_filter!检查用户是否已登录。

在此功能中,我检查当前用户会话是否处于活动状态。如果我什么都不做,但如果没有活动会话我想停止使用其余的功能/资源,然后将错误返回给用户未登录的调用应用程序。

我的问题是:

  1. 如果没有当前会话,如何在我的身份验证功能中“停止”请求。我不想重定向用户,只显示错误消息。

  2. 如何显示将发送回调用应用的错误消息?如果我能用JSON(和XML,如果可能的话)“回答”,那将是最好的。

  3. 这是我目前的代码。

    def authenticate_user!
    
            unless current_user
    
                if params[:token]
    
                    user = User.authenticate_token(params[:token])
    
                    if user
    
                        session[:user_id] = user.id
    
                    else
    
                        SEND BACK SOMETHING HERE AND STOP THE PROCESS?
    
                    end
    
                end
    
            end
    
        end
    

    感谢所有输入!

1 个答案:

答案 0 :(得分:2)

我也想知道这个问题的答案。

在我的情况下,我在上面的else子句中做了以下内容:

  else
      redirect_to :root, :status => 401
      return false
  end

这将返回401未授权并重定向到根并停止过滤器