【问题标题】:Devise authenticate_user redirects to new session path设计 authenticate_user 重定向到新的会话路径
【发布时间】:2020-12-11 10:35:32
【问题描述】:

设计authenticate_user! 方法重定向到新的会话路径Users::SessionsController#new。有没有办法将其配置为重定向到新的用户路径?

Started GET "/" for ::1 at 2020-08-21 22:54:20 -0700
Processing by WelcomeController#index as HTML
Completed 401 Unauthorized in 2ms (ActiveRecord: 0.0ms | Allocations: 1174)


Started GET "/users/login" for ::1 at 2020-08-21 22:54:20 -0700
Processing by Users::SessionsController#new as HTML

【问题讨论】:

标签: ruby-on-rails devise


【解决方案1】:

默认情况下,当你按下登录按钮时,它会调用会话控制器的创建方法来启动用户的会话。

sessions_controller.rb

 # POST /resource/sign_in

  def create
    self.resource = warden.authenticate!(auth_options)
    set_flash_message!(:notice, :signed_in)
    sign_in(resource_name, resource)
    yield resource if block_given?
    respond_with resource, location: after_sign_in_path_for(resource)
  end

这个方法的最后一行是在_sign_in_path_for之后调用另一个方法。默认情况下,after_sign_in_path_for 转到路由路径中定义的根 URL。您可以在应用程序控制器中覆盖此方法。

application_controller.rb

def after_sign_in_path_for(user)
   stored_location_for(user) || new_user_url(user)
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多