【问题标题】:User authentication and redirect when using ajax and php使用 ajax 和 php 时的用户身份验证和重定向
【发布时间】:2012-01-24 02:00:08
【问题描述】:

如果用户没有有效的会话,我通常会通过重定向用户来限制用户访问。

例如:

<?php
  session_start();
  if (!isset($_SESSION["userInfo"])) {
    header("Location: index.php");
  }
?>

但我正在使用 ajax 启动一个新项目来加载我的所有页面。

如果会话不再有效,我应该如何强制刷新我的 web 应用的页面?

是否应该在我的所有 ajax 请求之前添加一个专用身份验证请求,如果失败则通过 javascript 刷新页面?

或者,我是否应该在每个 json 响应中包含身份验证数据,然后在进一步处理 ajax 请求之前进行身份验证?

有没有更好的方法来做到这一点?

【问题讨论】:

  • 请注意,您的“常规方法”是错误的。 header() 重定向不会阻止页面的其余部分执行。每当您执行header() 重定向时,请始终使用die() 跟随它,否则您可能会产生不希望的副作用。

标签: php ajax json session web-applications


【解决方案1】:

理想情况下,您的客户端代码设计得足够好,这样您就有办法处理来自服务器端的各种错误。

当您的客户端代码进行 ajax 调用时,它应该查看响应的状态。如果用户没有会话,服务器应该回复 401(未授权)响应,这意味着“这是一个有效的 URL,但你需要经过身份验证”。

当您的客户端代码收到 401 时,它应该做任何必要的事情来让用户登录。这可能会将他们重定向到登录屏幕,或者执行某种模式身份验证 DHTML 弹出窗口。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-08
    • 2011-05-06
    • 2017-02-19
    • 2019-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多