我正在使用Rails 3开发API。我已经完成了自己的身份验证逻辑,并使用名为authenticate_user的before_filter!检查用户是否已登录。
在此功能中,我检查当前用户会话是否处于活动状态。如果我什么都不做,但如果没有活动会话我想停止使用其余的功能/资源,然后将错误返回给用户未登录的调用应用程序。
我的问题是:
如果没有当前会话,如何在我的身份验证功能中“停止”请求。我不想重定向用户,只显示错误消息。
如何显示将发送回调用应用的错误消息?如果我能用JSON(和XML,如果可能的话)“回答”,那将是最好的。
这是我目前的代码。
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
感谢所有输入!
答案 0 :(得分:2)
我也想知道这个问题的答案。
在我的情况下,我在上面的else子句中做了以下内容:
else
redirect_to :root, :status => 401
return false
end
这将返回401未授权并重定向到根并停止过滤器