![](/img/trans.png)
[英]Rails, devise, SPA, redirect to custom url (with param in query string) after logout and login (sign_out, sign_in)
[英]Specify Return URL for Devise Login as a Query String Parameter
Ruby on Rails,使用Devise进行身份验证。 我了解Devise包含开箱即用的深层链接,但是它要求用户首先导航到需要对其进行身份验证的URL。
该用例无法满足我的需求,我想知道是否存在提供查询字符串参数的选项,以便在登录后将用户重定向到当前页面。登录可为页面添加功能,但不能不需要。
您可以扩展Devise::SessionsController
使其适合您的需求。 如果您查看源代码 ,则在成功登录后,Devise将使用after_sign_in_path_for
将用户重定向到特定路径。
假设您拥有的资源是一个User
在routes.rb
,指定Devise应该使用的路由器:
devise_for :users, controllers: {sessions: 'sessions'}
然后在app/controllers/sessions_controller
中创建一个继承自Devise::SessionsController
app/controllers/sessions_controller
,并覆盖after_sign_in_path_for
:
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
)中,添加一个隐藏标签,该标签将redirect_path
参数中继到控制器:
<%= hidden_field_tag :redirect_path, params[:redirect_path].presence %>
现在,如果用户访问new_user_session_path(redirect_path: some_path)
,则应在成功登录后将其重定向到所需的路径。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.