我有一个API,需要根据是否有登录用户返回结果。我在rails端使用devise_token_auth,在客户端使用ng_token_auth(Angular)。
在我的控制器中,我想做类似以下的事情:
以此代码为例:
class Api::MyController < Api::ApiController
before_filter :authenticate_user!
def index
if current_user
# Create the result json using current_user
else
# Create the result json without user data
end
render json: result
end
end
只有经过身份验证的用户才能通过authenticate_user!调用并获取索引方法。 我希望所有用户都可以访问,包括经过身份验证和未经过身份验证的用户。
答案 0 :(得分:1)
您可以尝试以下操作(未经测试,因为我目前没有安装Rails)。
skip_before_filter :authenticate_user!, only: [:index_auth_failed]
before_filter do
authenticate_user! rescue redirect_to index_auth_failed
end
def index
# current_user exists
end
def index_auth_failed
# current_user does not exist
end