【问题标题】:How to set rails devise sign_in path as a root url如何将 rails devise sign_in 路径设置为根 url
【发布时间】:2019-03-28 13:18:28
【问题描述】:
devise_for :admins, path: 'admins' 
devise_scope :admin do
  root to: "devise/sessions#new"
end
http://localhost:3000/

当我刚刚输入上面的url时,我想重定向admins/sign_in路径,登录页面有时会打开,但是每次点击登录按钮后我都会收到这个错误并且没有登录。如何解决这个问题?

错误:

过滤器链停止为 :require_no_authentication 呈现或 重定向

【问题讨论】:

    标签: ruby-on-rails ruby devise rubygems


    【解决方案1】:

    看起来您正在尝试再次登录同一用户而无需退出

    devise_for :admins, path: 'admins' 
    
    devise_scope :admin do
      authenticated :admin do
        root 'home#index', as: :authenticated_root
      end
    
      unauthenticated do
        root 'devise/sessions#new', as: :unauthenticated_root
      end
    end
    

    【讨论】:

      【解决方案2】:

      你可以用这个实现同样的效果

      routes.rb

      root "home#index"
      devise_for :admins, path: 'admins' 
      

      home_controller.rb

      class HomeController < ApplicationController
      def index
         if not admin_signed_in?
           redirect_to admin_session_path
         end
      end
      

      【讨论】:

        【解决方案3】:

        已登录的用户无法再次登录...

        你可以试试这个,在你的 session_controller.rb 添加

        class Users::SessionsController < Devise::SessionsController
          prepend_before_filter :require_no_authentication, :only => [ :new, :create, :cancel ]
        end
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-07-04
          • 1970-01-01
          • 2012-06-08
          • 1970-01-01
          • 2013-11-02
          相关资源
          最近更新 更多