gpt4 book ai didi

php - 使用 lightopenid/注销保留登录信息

转载 作者:行者123 更新时间:2023-12-04 06:05:46 28 4
gpt4 key购买 nike

使用提供的示例代码,我可以使用我的 Google 帐户通过 lightopenid 登录到我的应用程序。我已将身份存储在 cookie 中,以便我的登录信息可以在整个 session 中保持不变。

当用户浏览我的网站时,我如何重新验证此 ID 以使其保持登录状态?我想让他们的名字显示在右上角/回应他们注销。

创建一个新的 lightopenid 对象,设置身份并调用 validate() 不起作用 - 我的 lightopenid 对象是一个没有太多内容的数组,validate() 返回 false。

除此之外,我将如何编写一个允许用户注销的链接?

登录代码(用于让用户进入我的网站):

    $openID = new LightOpenID($_SERVER['HTTP_HOST']);
$openID -> required = array(
'namePerson',
'namePerson/first',
'namePerson/last',
'contact/email'
);

if (!$openID -> mode) {
// TRYING TO LOG IN
$openID -> identity = 'https://www.google.com/accounts/o8/id';
redirect($openID -> authUrl());
} else {
$page_data = array(
"page_title" => "Login",
"additional_css" => array(),
"additional_js" => array()
);

if ($openID -> mode == "cancel") {
$login_error = array(
"login_error" => "Google authentication cancelled"
);

$this -> load -> view('global/header',$page_data);
$this -> load -> view('login/form',$login_error);
$this -> load -> view('global/footer');
} else {
if ($openID -> validate()) {
$openID_identity = $openID -> identity;
$openID_data = $openID -> getAttributes();
$first_name = $openID_data["namePerson/first"];
$last_name = $openID_data["namePerson/last"];
$email = $openID_data["contact/email"];

$login = array(
"first_name" => $first_name,
"last_name" => $last_name
);

// SESSION COOKIE
$this -> session -> set_userdata(array(
"user_id" => 0,
"identity" => $openID_identity,
"first_name" => $first_name,
"last_name" => $last_name,
"email" => $email
));

redirect("/login/welcome");
} else {
$login_error = array(
"login_error" => "Google authentication failed"
);

$this -> load -> view('global/header',$page_data);
$this -> load -> view('login/form',$login_error);
$this -> load -> view('global/footer');
}
}
}

最佳答案

您应该使用 session 机制(如 php session )。这样,您就不必再次验证身份。

通常,为了再次验证标识符,您必须重复整个身份验证过程,这不是一个好主意。

您不能从 openid 注销用户。但是,您可以删除 session ,这样您的服务器就不会记住该用户已登录(这与不使用 openid 时所做的完全相同)。

另外,请阅读 openid.php 顶部的文档。 :

 * Change the 'my-host.example.org' to your domain name. Do NOT use $_SERVER['HTTP_HOST']
* for that, unless you know what you are doing.

当然,也就是说,除非您真正了解使用它的安全隐患。

关于php - 使用 lightopenid/注销保留登录信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8386477/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com