使用提供的示例代碼我可以使用我的Google帳戶通過lightopenid登錄到我的應用程序。我已將身份存儲在cookie中,以便我的登錄可以在會話中持續存在。使用lightopenid /註銷保留登錄信息
然後,我如何重新驗證此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');
}
}
}
你的代碼看起來像一堆文本......也許這就是問題所在。 – stormdrain
編輯一堆文本以添加文本牆。 – MikkyX
啊!更好:)我沒有使用過OA,但是從他們的文檔粗略瀏覽看來,它需要智能模式來持久化身份驗證,而Lightopenid只有「啞」模式。但是,如果您只想跟蹤身份驗證,則可以使用db會話並檢查openID身份。使用db cookie作爲用戶名並在註銷時刪除cookie。 – stormdrain