私の質問は非常に単純です:sp_session_reloginはどのように機能していますか?
これが私がそれを使う方法です。
bool login(const char* login, const char* password, bool remember)
{
if (remember) {
sp_error err = sp_session_relogin(_session);
if (err==SP_ERROR_OK) {
return true;
}
if (!login||!password) {
return false;
}
}
sp_session_login(_session, login, password, remember, NULL);
return true;
}
そして私が最初に呼び出すアプリケーション
login(0,0,true);
そしてそれがfalseを返すなら、私はそれをこのように思い出します
login(username,password,true);
(ユーザー名とパスワードはUIから取得されます)。次に、アプリケーションを完全に再起動した場合、最初のログイン呼び出しは引き続きfalseを返します。
iKenndacからの回答後に編集
sp_session_logout()を呼び出していましたが、ログアウトコールバックが呼び出されるのを待っていませんでした。私はそれを持っていましたが、それは良くありません。これが私のアプリケーションの終了方法です
if (_session) {
if (_loggedin) {
char buffer[1024];
int ret = sp_session_remembered_user(_session,buffer,sizeof(buffer));
if (ret>0) {
printf("remembered user: %s\n",buffer);
}
sp_session_logout(_session);
int msTilNext = 0;
while(_loggedin) {
sp_session_process_events(_session, &msTilNext);
}
}
sp_session_release(_session);
_session = 0;
}
sp_session_remembered_userは私のユーザー名を正しく返します。ログアウト後、sp_session_process_eventsでイベントを処理するために呼び出されるログアウトコールバックを待っています。ログアウトコールバックが呼び出されると、_ loggedinがfalseになったため、ループが終了します。セッションを解放します。そして、かなりのアプリケーション。
別の間違いや不足しているものがありますか?何か案が ?
ありがとう。