gpt4 book ai didi

使用 Devise 和 (warden) 回调的 Ruby On Rails 身份验证

转载 作者:数据小太阳 更新时间:2023-10-29 07:57:19 25 4
gpt4 key购买 nike

我有一个使用 Devise 的 Rails 应用程序,它有一个用户模型,没有作用域。我还在应用程序中添加了 activeadmin gem,Active Admin 是用于在您的应用程序中添加管理仪表板的 gem。它使用 Devise 来登录用户并为管理员创建一个单独的 admin_user 模型。

我允许匿名、未登录的用户创建购物车,创建一个 session[:cart_id] .如果用户登录我想将用户与购物车相关联,比如

Cart.find(session[:cart_id]).user = current_user 

我正计划使用 Wardens 回调 wardens callbacks为了暗示这一点,像这样:

Warden::Manager.after_set_user :scope => :user do |user, auth, opts|

Cart.find(session[:cart_id]).user = user

end

但是,如果我这样做,我会得到一个错误:

<% unless user_signed_in? %>抛出错误 :admin_user user is not logged in

有人知道发生了什么事吗?

我看过相关问题,但没有帮助:

How to access session from Warden/Devise after_authentication callback in Rails

Where should warden callbacks be placed in a rails app?

最佳答案

Active Admin 使用的 AdminUser 模型也执行此回调。因此,也许 if 可以解决您的问题:

 Warden::Manager.after_set_user :scope => :user do |user, auth, opts|
Cart.find(session[:cart_id]).user = user if user.class == User
end

关于使用 Devise 和 (warden) 回调的 Ruby On Rails 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8238476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com