Rails - How to override devise SessionsController to perform specific tasks when user signs in?

后端 未结 3 1226
囚心锁ツ
囚心锁ツ 2020-12-02 22:39

Using Devise to manage users sessions / registrations I would need to perform specific tasks (updating some fields in the users table for this specific user for example) eac

3条回答
  •  挽巷
    挽巷 (楼主)
    2020-12-02 22:58

    Alternatively, you can create your own sessions controller

    class SessionsController < Devise::SessionsController
      def new
        super
      end
    
      def create
        self.resource = warden.authenticate!(auth_options)
        set_flash_message(:notice, :signed_in) if is_navigational_format?
        sign_in(resource_name, resource)
        if !session[:return_to].blank?
          redirect_to session[:return_to]
          session[:return_to] = nil
        else
          respond_with resource, :location => after_sign_in_path_for(resource)
        end
      end
    end
    

    And in routes.rb add:

    devise_for :users, controllers: {sessions: "sessions"}
    

提交回复
热议问题