这是否可以使用 PHP 保持登录凭据有效?

Ama*_*rsi 8 javascript php cookies

如果有人登录 Google、Facebook、Amazon 或 Stack Overflow,则该人的登录凭据将一直有效,直到注销。我想问一下,在使用 PHP 或 Javascript 注销之前,如何将我的用户的登录凭据保持在他/她的计算机中?

如果不能,可以使用 PHP 或 Javascript,那么我可以做什么或应该使用什么技术。

我应该使用Cookie函数并设置过期时间,直到我的域使用mktime函数过期。

已编辑

请提及您的答案的源代码。

C. *_*ora 6

您可以使用 PHP 增加会话超时。如果您希望会话在浏览器关闭之前一直保持活动状态,您只需将 session.gc_maxlifetime 设置为 0:

ini_set('session.gc_maxlifetime', 0);
Run Code Online (Sandbox Code Playgroud)

如果您想要无限会话,您可以将 session.gc_maxlifetime 设置为:

 ini_set('session.gc_maxlifetime', 60 * 60 * 24 * 365); # session expires after 1 year
Run Code Online (Sandbox Code Playgroud)

否则,您可以在开始会话之前将 session.gc_probability 设置为 0。这将使垃圾收集器有 0% 的机会删除会话数据。您必须在共享相同会话存储位置的所有应用程序中执行此操作。

 ini_set('session.gc_probability', 0);
Run Code Online (Sandbox Code Playgroud)

您还可以从 php.ini 文件中更改这些值

如果您需要有关 php.ini 变量的更多信息,请查看 php 文档:https : //www.php.net/manual/en/session.configuration.php#ini.session.gc-probability


小智 5

您可以为此使用 php $_SESSION 或 COOKIE

$_SESSION['USER'] = ['current user details']; 
Run Code Online (Sandbox Code Playgroud)

您可以将 cookie 和 session 结合起来以获得很好的体验,因为初学者首先使用 sesion

您不能将 cookie 的有效期设置为超过 2038 年,否则它将结束


小智 5

这称为 OAauth 身份验证。每家提供 OAuth 身份验证的公司(如 Google、Facebook、Amazon、Github 等)都会向您提供有关如何以正确方式进行身份验证的文档说明。

无论如何,您必须拥有自己的身份验证逻辑,该逻辑将为所描述的任何选项提供服务,并且您必须逐一实现它们中的每一个。在对您的用户进行身份验证后,您必须像往常一样在任何应用程序中保留创建的会话。


小智 5

事实上,正是 Open Id Connect 允许用户按照您描述的方式进行连接。

Oauth2 是几年前开发的。这是一个授权协议,这意味着它基本上用于管理数据访问。它有几个流程可以工作,具体取决于您想要做什么。

OpenId Connect 它是一个覆盖层,通过 Oauth2 流实现身份验证过程。事实上,Oauth2 和 OpenId Connect 是互补的。OpenId Connect 的 90% 实际上是 Oauth2。其余部分是使 Oauth2 可用于身份验证的部分

互联网上的文档使用不同的流程这一事实使得理解起来更加复杂

我不认为我所说的实际上很清楚,这是一个广泛的主题。我一直在努力理解它是如何工作的。当我在 youtube 上看到这个视频时,我才真正了解它是如何工作的是的,它持续一个小时,但可能会节省几天时间。


Men*_*nas 5

  • Cookie 是网站识别用户的方式,以便即使在浏览器重新启动时也能保持会话有效。
  • Cookie 不应用于存储登录凭据。只有服务器生成的唯一会话标识符,以便稍后访问网站时识别设备。
  • Cookie 必须在未来的某个时间点过期,但您可以将其过期日期设置为几年后。
  • 可以使用JavaScriptdocument.cookie从客户端或服务器端(更实用的会话处理)通过Set-Cookie HTTP 响应标头设置 Cookie,这可以使用PHP 标头函数手动完成,或者更好地使用setcookie 函数完成或者更容易让 php 使用其内置会话函数为您处理整个会话处理过程。


LIG*_*GHT 5

您正在寻找的是PHP Session。您可以使用 PHP 会话为您的用户创建“活动”页面以获得自定义用户体验。会话比 cookie 相对安全,因为它们存储在服务器计算机中,但正如 @Anirudhsanthosh 所提到的,您可以同时使用两者以获得更好的体验。

这是关于如何使用PHP Session 创建登录页面的教程。

基本思想是,当用户输入用户名和密码时:

  1. 检查您存储在数据库中的用户名和密码。

  2. 如果用户名和密码匹配,您可以将给定的用户信息存储在会话变量中 $_SESSION['user'] = $username;

  3. 在您必须仅授予登录用户访问权限的每个页面上,检查用户是否以以下身份登录:

    if(!isset($_SESSION['user'])){
    // REDIRECT TO LOGIN PAGE
    }
    
    Run Code Online (Sandbox Code Playgroud)

PS:不要忘记在每个页面的开头开始会话 session_start();


小智 4

登录过程并不像您想象的那样。Facebook、谷歌和其他网站在用户注销之前不会保留登录凭据。

您可以使用两种主要方法对网站的用户进行身份验证。

  • OAuth 是用户每次访问网站时都必须提供用户名和密码的一种方式。为此,您必须将用户名和密码存储在 Cookie 或其他位置,然后您可以在每个请求中传递它们

如果您需要将登录凭据存储为 cookie,您可以这样做,

document.cookie = 'username=username; expires=Sun, 1 Jan 2023 00:00:00 UTC; path=/'

但不要这样做!

存储登录凭据存在很高的安全风险。

  1. OAuth2 是最安全的方式。假设一个用户第一次尝试登录您的网站。当他输入用户名和密码时,您的网络服务器会验证它们,如果它们正确,服务器将发回令牌。令牌是一个长字符串,很难被猜测或暴力破解。

然后你可以将该令牌存储在 cookie 中

document.cookie = 'token=tokenhere; expires=Sun, 1 Jan 2023 00:00:00 UTC; path=/'

并在每个请求中传递令牌。因此服务器可以在没有登录凭据的情况下验证用户请求。