我目前正在将 RESTful API 添加到 Rails 教程中的示例应用程序中,并且我正在尝试使用门卫来保护它,而无需其他宝石(例如设计或许可)。我希望门卫根据现有会话对用户进行身份验证。当前的会话实现在浏览器中保留remember_tokencookie(在登录时分配)并将散列令牌存储在用户模型中。
我在模块(app/helpers/sessions_helper.rb)中有一个current_user方法SessionsHelper,它也包含在ApplicationController中:
def current_user
remember_token = User.digest(cookies[:remember_token])
@current_user ||= User.find_by(remember_token: remember_token)
end
Run Code Online (Sandbox Code Playgroud)
这是resource_owner_authenticator(其他失败的实现已被注释掉):
resource_owner_authenticator do
# fail "Please configure doorkeeper resource_owner_authenticator block located in #{__FILE__}"
# Put your resource owner authentication logic here.
# Example implementation:
# User.find_by_id(session[:user_id]) || redirect_to(new_user_session_url)
# puts current_user || "no user"
# current_user # || redirect_to(signin_path)
# remember_token = User.digest(request.cookies[:remember_token])
# User.find_by(remember_token: remember_token)
# puts "in resource_owner_authenticator"
current_user
end
Run Code Online (Sandbox Code Playgroud)
以下是来自一个 GET 请求的错误: …