Ruby on Rails 登录后设计代码 [英] Ruby on Rails Devise code after login
问题描述
我有一个使用 Devise 登录的 RoR 应用程序.创建新用户记录时会执行一些代码,将其作为 after_create 调用/宏/任何内容放入 user.rb 文件中.我需要在每次登录后运行此代码,而不是在创建新用户时运行.
I have an RoR app using Devise for logins. There is some code that is executed when a new User record is created, by being put in the user.rb file as an after_create call/macro/whatever. I need to make this code run after each login, instead of running on new user creation.
通过一些谷歌搜索,似乎一种选择是在 devise.rb 代码中放置 Warden 回调.我的问题是:
With some Googling, it seems that one option is to place Warden callbacks in the devise.rb code. My questions are:
- 这是正确的,和/或有更好的方法吗?
- 如果这是正确的方法......
- Warden::Manager... 方法 defs 应该放在 Devise.setup 中的 devise.rb 中,还是在它之后?
- after_authentication 是我应该使用的回调吗?我只是检查基于用户名的目录是否存在,如果不存在,则创建它.
推荐答案
Just subclass 设计会话控制器 并将您的自定义行为放在那里:
Just subclass Devise's sessions controller and put your custom behaviour there:
# config/routes.rb
devise_for :users, :controllers => { :sessions => "custom_sessions" }
然后像这样创建你的控制器:
And then create your controller like this:
# app/controllers/custom_sessions_controller.rb
class CustomSessionsController < Devise::SessionsController
## for rails 5+, use before_action, after_action
before_filter :before_login, :only => :create
after_filter :after_login, :only => :create
def before_login
end
def after_login
end
end
这篇关于Ruby on Rails 登录后设计代码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!