【发布时间】:2020-05-16 03:48:10
【问题描述】:
如何在 Rails 下的 Grape 中使用基于 cookie 的 Sorcery 身份验证会话?
我有兴趣使用来自葡萄控制器的session 和current_user 等命令。
【问题讨论】:
标签: ruby-on-rails session-cookies grape sorcery
如何在 Rails 下的 Grape 中使用基于 cookie 的 Sorcery 身份验证会话?
我有兴趣使用来自葡萄控制器的session 和current_user 等命令。
【问题讨论】:
标签: ruby-on-rails session-cookies grape sorcery
将以下帮助程序添加到您的根 API 挂载点:
class API < Grape::API
..
helpers APIHelpers
..
end
# add this to app/api/api_helpers.rb
module APIHelpers
include Sorcery::Controller
def session
env['rack.session']
end
def reset_session
if env['rack.session']&.respond_to?(:destroy)
session.destroy
else
env['rack.session'] = {}
end
end
def form_authenticity_token
session[:_csrf_token] ||= SecureRandom.base64(32)
end
def current_user
@current_user = login_from_session || nil unless defined?(@current_user)
@current_user
end
end
包括Sorcery::Controller 给了我所有的巫术方法(登录、current_user 等),但是有一些缺少的会话方法需要通过助手添加以确保巫术快乐。请注意,Grape 不提供与 rails 相同的 CookieJar,因此您将无法使用 cookies.signed。这对我来说不是问题,但可能对你来说是个问题。我处理了调用签名 cookie 的魔法函数。
【讨论】: