用户登录后为什么gem设计重定向注册路径?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用户登录后为什么gem设计重定向注册路径?相关的知识,希望对你有一定的参考价值。

我的application_controller.rb中有一个after_sign_in_path_for方法。用户登录后成功调用该方法(我通过加注检查)。不幸的是,在成功登录后,用户总是被重定向到new_user_session(/ users / new)而不是我的dashboard_path(/ dashboard)。我希望用户在登录后重定向到仪表板路径。您是否有任何线索可以覆盖我的重定向到dashboard_path?

这是我的代码

application_controller.rb

class ApplicationController < ActionController::Base
  before_action :authenticate_user!
  before_action :configure_permitted_parameters, if: :devise_controller?


  protected

  def after_sign_in_path_for(resource)
    dashboard_path
  end
  def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:sign_up) { |u| u.permit(:first_name, :email, :password, :password_confirmation, :remember_me) }
  end
end

日志

    Started POST "/users/sign_in" for 127.0.0.1 at 2018-09-17 14:48:22 +0200
Processing by Devise::SessionsController#create as html
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"1vtsPGq6tRhJAjUn+hwoMIwfeDjOEMzpEejQVQfT9r/4B1aMv7B727E71F3qLoobyUN5mQkWLzbo/RNxHWZQJQ==", "user"=>{"email"=>"tdesfrancs@gmail.com", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Log in"}
  User Load (1.2ms)  SELECT  "users".* FROM "users" WHERE "users"."email" = $1 ORDER BY "users"."id" ASC LIMIT $2  [["email", "tdesfrancs@gmail.com"], ["LIMIT", 1]]
   (0.2ms)  BEGIN
   (0.1ms)  ROLLBACK
  Rendering devise/sessions/new.html.erb within layouts/application
  Rendered devise/shared/_links.html.erb (1.1ms)
  Rendered devise/sessions/new.html.erb within layouts/application (8.7ms)
  Rendered shared/_flashes.html.erb (0.4ms)
Completed 200 OK in 303ms (Views: 120.7ms | ActiveRecord: 1.5ms)
答案

你可以通过将stored_locations_for(resource)设置为nil来更进一步,然后为每个动作设置不同的重定向,即:after_sign_up_path(resource)after_sign_in_path(resource)等等。

#routess.rb

devise_for :users, :controllers => {:registrations => "registrations"}

registrations_controller.rb

class RegistrationsController < Devise::RegistrationsController

protected

  def after_sign_up_path_for(resource)
    dashboard_path
  end
end

以上是关于用户登录后为什么gem设计重定向注册路径?的主要内容,如果未能解决你的问题,请参考以下文章

Rails:登录或注册后设计重定向到存储位置?

302 登录重定向后被 IE 删除的 URL 片段

验证注册表中的数据后,重定向到另一个页面以登录

Django 注册 url 重定向

在asp.net mvc中注册成功(重定向到登录)后用户名自动填写登录页面

Active Admin成功登录重定向到用户登录页面