Ruby on rails 用户身份验证

Ruby on rails 用户身份验证,ruby-on-rails,Ruby On Rails,在“我的web应用”中,用户登录新会话后,在关闭浏览器之前,他将保持登录状态。当管理员想要禁止浏览器仍处于打开状态的用户时,就会出现问题。即使用户被禁止并且无法再登录,他仍然会保持登录状态,直到关闭浏览器或手动注销。这肯定是应该解决的 是否可以为每个控制器的每个操作添加验证方法?当然,我指的是一种智能方式——不是100次复制/粘贴。将以下内容添加到应用程序控制器: before_filter :sign_out_banned_user def sign_out_banned_user if

在“我的web应用”中,用户登录新会话后,在关闭浏览器之前,他将保持登录状态。当管理员想要禁止浏览器仍处于打开状态的用户时,就会出现问题。即使用户被禁止并且无法再登录,他仍然会保持登录状态,直到关闭浏览器或手动注销。这肯定是应该解决的


是否可以为每个控制器的每个操作添加验证方法?当然,我指的是一种智能方式——不是100次复制/粘贴。

将以下内容添加到应用程序控制器:

before_filter :sign_out_banned_user

def sign_out_banned_user
  if current_user.banned?
    session[:current_user_id] = nil
    redirect_to root_path, :notice => "You are banned"
    return false
  end
end

将以下内容添加到应用程序控制器:

before_filter :sign_out_banned_user

def sign_out_banned_user
  if current_user.banned?
    session[:current_user_id] = nil
    redirect_to root_path, :notice => "You are banned"
    return false
  end
end

我想你也必须重置会话。

我想你也必须重置会话。

你能解释为什么返回false吗?你可以尝试删除
返回false
。如果没有
返回false
,则在
重定向到
后,代码将继续并进入操作。然后会有重复的
重定向到
,因为您参与了该操作。您能解释一下为什么返回false吗?您可以尝试删除
返回false
。如果没有
返回false
,则在
重定向到
后,代码将继续并进入操作。然后会有重复的
重定向到
,因为您参与了该操作。我已添加回用于重置会话的行:)我已添加回用于重置会话的行:)