Ale*_*ich 3 database single-sign-on
我正在查看一个模式,并试图弄清楚这个表可以用于什么:
CREATE TABLE "single_sign_ons"
"token" VARCHAR(64) NOT NULL,
"ip" VARCHAR(32) NOT NULL,
"expired_at" DATETIME NOT NULL,
"one_time" VARCHAR(64),
"created_at" DATETIME,
"updated_at" DATETIME,
"user_id" INTEGER,
PRIMARY KEY("token"));
Run Code Online (Sandbox Code Playgroud)
什么是"单点登录",为什么此表的作者为此目的包含这些列?
它是用户登录会话的持有者.我相信当用户登录以验证其会话仍处于活动状态时,将使用该表,并允许他们访问不同的服务器/站点而无需再次登录.
我假设在第一次登录时,用户的会话将被认为是新的,因此将查询用户的凭据.然后在该表中输入一行,其中包含用户的ID,IP地址,创建日期和令牌.然后,此令牌将附加到用户的会话,并在后续登录中使用.
然后,其他进程将接收令牌作为通信的一部分,并检查此表以确保会话仍然有效.每次检查会话时,都会更改更新字段,以便知道用户处于活动状态.
还有更多的逻辑会定期检查表并使最近没有更新的任何会话行到期.无论这个系统是什么"足够".然后,使用令牌的后续访问请求将注册到期,查询凭据并使用新令牌建立新行.