检查用户是否已安排在设计中



,因为我使用javascript执行操作而不是控制器方法,所以我需要检查是否已计时,在启动该操作之前已计时。为此,我尝试在我的application_controller.rb中添加和删除cookie:

Warden::Manager.after_set_user do |user,auth,opts|
  auth.cookies[:signed_in] = 1
end
Warden::Manager.before_logout do |user,auth,opts|
  auth.cookies.delete :signed_in
end

和我的JavaScript文件:

myCookie = getCookie("signed_in");
if (myCookie == null)
{
  //redirect to sign in page
} else {
  //perform my action
}
function getCookie(name) {
  var dc = document.cookie;
  var prefix = name + "=";
  var begin = dc.indexOf("; " + prefix);
  if (begin == -1) {
    begin = dc.indexOf(prefix);
    if (begin != 0) return null;
  }
  else
  {
    begin += 2;
    var end = document.cookie.indexOf(";", begin);
    if (end == -1) {
    end = dc.length;
    }
  }
  return decodeURI(dc.substring(begin + prefix.length, end));
} 

但是,这似乎在会话超时,仅在注销上不起作用。我已经看到了几种实现这一目标的黑客方法,但是我似乎无法直接从设计或监狱长找到任何东西,以使用或覆盖一种方法来测试用户是否已超时或在用户(如果已经使用用户(采取行动时间到。我在Rails 5上设计了4.2.1。

您需要向服务器提出该操作,以查看用户是否有时间安排,因为当您设置超时,这是服务器端,因此没有更改客户端时,唯一知道的唯一方法是向服务器提出AJAX请求,以查看会话的时间安排user.timedout?(Time.now.utc)还是直接按照操作请求(在控制器中(进行验证,用户将始终尝试尝试要运行操作,但是在服务器上,您可以验证用户是否有定时,那么您不允许他们执行此操作并重定向到登录页面。

相关内容

  • 没有找到相关文章

最新更新