0

ユーザーがFacebookまたは独自のmysqlデータベースを介してログインするログイン/ログアウトシステムがあります。

ユーザーがログインに成功すると、完全に保存されます。

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("loggedIn", true);
editor.putString("email", EMAIL); 
editor.putString("password", PASSWORD);
editor.putInt("USERID",  Integer.parseInt((String) product.get("ProfileID")));
editor.commit(); 

そして、ユーザーがログインしているかどうかを確認するスプラッシュ ページがあります。

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
boolean loggedin = settings.getBoolean("loggedIn", false);
if (loggedin) {
    Intent intent = new Intent(this, LoggedIn.class);
    startActivity(intent);
} else {
    Intent intent = new Intent(this, LogIn.class);
    startActivity(intent);
}

そして、ユーザーがログアウトすると:

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("loggedIn", false);
editor.putString("email", "");
editor.putString("password", "");
editor.commit();
db.clearLists();
db.clearProducts();
Intent intent = new Intent(v.getContext(), Splash.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP );
v.getContext().startActivity(intent);

これは正常に機能しているように見えます。つまり、ユーザーはログアウトしてログイン ページに戻り、すべてのデータがアプリから消去されています。

ただし、一部のユーザーは、アプリを閉じて戻ってきても、実際にはまだログインしていると報告しています。これを再現することはできません。ログイン/アウトシステムを改善して防止する方法について誰かが意見を持っているかどうか疑問に思っています。これ。

4

2 に答える 2

0

ログアウト時に共有設定をフラッシュし、ログイン中に共有設定が存在するかどうかを確認してからログインし、それ以外の場合はユーザーをログインページにリダイレクトすることをお勧めします。

于 2013-10-06T10:54:55.583 に答える
0

あなたのコードは大丈夫です。しかし、ログインをsqlite dbに転送できると思います。それらを db に保存し、db からログイン情報を取得します。これは簡単な汚い修正です;)

于 2013-10-06T10:47:44.260 に答える