一种在回调中访问devise / Warden的auth cookie的方法

时间:2016-06-06 01:08:40

标签: ruby-on-rails cookies devise warden

我正在使用Warden的回调将某些数据保存到Cookie中。 这就是我所拥有的:

//This is in devise.rb
Warden::Manager.after_authentication do |user, auth, opts|
        auth.cookies[:signed_in] = 1
        auth.cookies[:user_role] = user.role
    end

问题是当用户第一次在我的网络应用程序中注册时,不会调用此回调。因此,我无法将某些数据保存到cookie,并且我的Web应用程序无法以正确的方式运行。

我需要在用户模型中制作一个自定义函数,如下所示,以便在用户创建后触发。

after_commit :after_sign_up, on: :create
    def after_sign_up
        //need to call below functions over here
        //auth.cookies[:signed_in] = 1
        //auth.cookies[:user_role] = user.role
    end

但是,我不知道如何访问与Warden的回调相同的cookie。有没有办法在模型中访问cookie?如果没有,我应该在控制器中访问?如果是这样,我是否需要在控制器中添加模块才能访问它?详细解释将不胜感激

1 个答案:

答案 0 :(得分:2)

我相信Warden::Manager.after_set_user会做你想要的。在创建用户或登录后调用它。

示例:

Warden::Manager.after_set_user do |user,auth,opts|
    # Your code
end