将Devise Login的返回URL指定为查询字符串参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将Devise Login的返回URL指定为查询字符串参数相关的知识,希望对你有一定的参考价值。

Ruby on Rails,使用Devise进行身份验证。我知道Devise包含开箱即用的深层链接,但它要求用户首先导航到需要进行身份验证的URL。

这个用例不符合我的需求,我想知道是否有提供查询字符串参数的选项,以便在登录后将用户重定向到当前页面。登录为页面添加功能,但不是不需要。

答案

你可以扩展qazxsw poi以满足你的需要。如果您查看qazxsw poi,设备使用Devise::SessionsController将用户重定向到成功登录后的特定路径。

假设您拥有的资源是source code

在您的qazxsw poi中,指定设备应使用的路由器:

after_sign_in_path_for

然后在User中创建一个继承自routes.rb并覆盖devise_for :users, controllers: {sessions: 'sessions'} 的控制器:

app/controllers/sessions_controller

在新的会话表单(Devise::SessionsController)中,添加一个隐藏的标记,将after_sign_in_path_for param中继到控制器:

class SessionsController < Devise::SessionsController

  protected

  def after_sign_in_path_for(resource)        
    params[:redirect_path].presence || stored_location_for(resource)
  end
end

现在,如果用户访问app/views/devise/sessions/new.html.erb,则应在成功登录后将其重定向到所需的路径。

以上是关于将Devise Login的返回URL指定为查询字符串参数的主要内容,如果未能解决你的问题,请参考以下文章

wp_login_url()返回相对URL而不是完整URL

对相似的 URL 进行分组

Rails Devise Omniauth new_user_registration_url

ELK:kibana使用的lucene查询语法

如何获取url的参数,并完成指定页面跳转。

S3 对象返回八位字节流,但上传为 png