ruby-on-rails - 登录后将用户重定向到同一页面(Rails)

标签 ruby-on-rails redirect authentication

我想在登录后将用户重定向到同一页面。这种情况是,如果用户未登录,他将被重定向到登录页面。在登录页面上,当他单击可用的用户选项之一时,我想存储 user_id,然后将他重定向回相同的页面他来自的页面。 为此,我使用以下代码:

在 application_helper.rb 中:

module ApplicationHelper
def check_signed_in
if session[:user] == nil
  if request.format.html?
    session[:referer] = request.url
    redirect_to signin_index_path
  else
    @error = 'Please Signin!'
    @forward_page = '/signin'
    render 'signin/show_signin.js'
  end
end
end
end

在 SigninController 中:

class SigninController < ApplicationController
def index
session[:user] = params[:user_id]
redirect_to session[:referer]
end 
end

在登录/索引页面:

We simulate a signin here. Click on an user and you will logged in as the selected user and you will be redirected the previous page.

<%= link_to 'Sam', controller:"signin", action: "index" , user_id: 284542812, remote: true %> <%= link_to 'Marge', controller:"signin", action: "index" , user_id: 604700687, remote: true %>

我得到的错误:

user_id 未被保存,在重定向时我收到一条错误消息,指出 session[:referer] 为 nil。

请解释我做错了什么

最佳答案

你称它为异步 if request.format.html? 然后询问格式是 html?返回 false。由于它返回 false,您无法存储此 session session[:referer] = request.url

Rails 也有 redirect_to :back 选项。先试试下面这个,然后告诉我...

助手:

module ApplicationHelper
  def check_signed_in
    if session[:user]
      session[:referer] = request.url
    end
  end
end

Controller :

class SigninController < ApplicationController
  include ApplicationHelper

  def index
    check_signed_in
    session[:user] = params[:user_id]
    redirect_to session[:referer]
  end 
end

关于ruby-on-rails - 登录后将用户重定向到同一页面(Rails),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36775006/

相关文章:

css - 如何将 Ruby 哈希转换为 CSS 规则?

asp.net - web.config 中的多重/不同身份验证设置

javascript - 如何在 JavaScript 中重定向特定日期的网站?

c# - 如何将 AzureAD 和 AzureADBearer 添加到 asp.net core 2.2 web api

android - 如何在移动应用程序中设置持久身份验证?

mysql - 如何从开发数据库中导入生产数据?

ruby-on-rails - 无法在 heroku 上使用 devise 登录,所有其他环境都可以

ruby-on-rails - 在 ruby​​ 进程之间处理大数据对象

javascript - OnClick 带标题的按钮

c++ - 如何返回一个 QUrl 是否重定向的 bool 值?