首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >成功完成设备登录后,如何将用户重定向回需要登录的前一个操作?

成功完成设备登录后,如何将用户重定向回需要登录的前一个操作?
EN

Stack Overflow用户
提问于 2011-08-09 06:32:04
回答 3查看 11.1K关注 0票数 19

我有一个ajax投票按钮:如果用户单击了“拇指向上”的图像,但没有登录,那么他们应该会看到一个对话框,要求他们首先登录。

为了实现这个对话框,我使用了绑定到ajax:failure事件的jQuery和facebox。如果用户未登录,Devise将引发401 Unauthorized。facebox在弹出的对话框中加载用于登录的远程html,该对话框显示了DEVISE signin表单。

一切工作,但成功登录后,用户被重定向到主页。如果用户被重定向回他们正在查看的帖子,这样他们就可以继续投票,这将更加直观。

是否有实现此行为的最佳实践方法?

谢谢。

EN

回答 3

Stack Overflow用户

发布于 2011-08-09 07:00:06

我用Authlogic on Rails 3做了以下事情,也许你可以使用它或者做一些类似的事情:

代码语言:javascript
复制
class ApplicationController < ActionController::Base
  after_filter :store_location
private
  def store_location
    session[:return_to] = request.fullpath
  end

  def clear_stored_location
    session[:return_to] = nil
  end

  def redirect_back_or_to(alternate)
    redirect_to(session[:return_to] || alternate)
    clear_stored_location
  end
end

然后,您可以在登录操作中使用类似于redirect_back_or_to dashboard_path的内容。

对于某些控制器/操作,我不想存储位置(例如登录页面)。对于那些,我只需跳过过滤器:

代码语言:javascript
复制
class UserController < ApplicationController
  skip_after_filter :store_location
end

在Devise wiki中也有一个关于这样做的页面:https://github.com/plataformatec/devise/wiki/How-To:-Redirect-to-a-specific-page-on-successful-sign-in

票数 19
EN

Stack Overflow用户

发布于 2012-11-01 22:13:10

在ApplicationController中写入以下内容:

代码语言:javascript
复制
after_filter :store_location
def store_location
  session[:previous_urls] ||= []
  # store unique urls only
  session[:previous_urls].prepend request.fullpath if session[:previous_urls].first != request.fullpath
  # For Rails < 3.2
  # session[:previous_urls].unshift request.fullpath if session[:previous_urls].first != request.fullpath 
  session[:previous_urls].pop if session[:previous_urls].count > 2
end
def after_sign_in_path_for(resource)
  session[:previous_urls].last || root_path
end

来源:https://github.com/plataformatec/devise/wiki/How-To:-Redirect-back-to-current-page-after-sign-in,-sign-out,-sign-up,-update

票数 4
EN

Stack Overflow用户

发布于 2011-08-09 06:45:40

使用cookie。获取他们试图访问的window.location.href并将其存储为cookie。在您的主页上,检查document ready函数中是否存在此cookier,如果存在,请重定向

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6989421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档