2017-05-25 13 views
0

今、私はアンドロイドでアプリを開発する方法を学んでいます。アプリが終了してもユーザーをログインさせておきたいと思います。私はhereを読んで、アンドロイドのデバイスIDと送信したトークンを使ってユーザーをログインさせておくことができます。しかし、後で私のアプリケーションをiOS、Windows、または他のオペレーションシステムに展開することにしたら、トークンを使用して認証するのは安全ですか?もしそうなら、トークンはどのくらい強く(何文字)必要ですか?事前に電話アプリをログインしたままにするベストプラクティスは何ですか?トークンアプローチは安全ですか?

おかげ

+0

私はAuthTokenがより良いアプローチだと思います!ユーザーがクレデンシャルを与えたら!サーバーは検証し、独自のauthtoken!を生成します。共有設定で保存します。 – xbadal

答えて

0

まあ、デバイスにユーザーを保存し、アプリがまだ開いているかどうかを確認する必要があります。ここに例があります..

Webリクエストapiでログインした場合、WebリクエストのOnSuccessResponseの中に、私は自分のUserモデルクラスの新しいオブジェクトを作成し、SharedPreferenceを使って保存します!私はHawkという非常に素晴らしいSharedPreferenceライブラリを使っています。

   // code.. 
       @Override 
       public void onResponse(JSONObject response) { 

        Gson gson = new Gson(); 
        try { 
         UserModel user= gson.fromJson(response.getJSONObject("customer").toString(), UserModel.class); 
         Hawk.put("user", user); // here I save the user object 
         Toasty.success(context, "Login was a success", Toast.LENGTH_SHORT).show(); 
         Intent i = new Intent(context, MyHome.class); 
         context.startActivity(i); 

        } catch (JSONException e) { 
         e.printStackTrace();  
        } 
       } 
       // code.. 

ここで、ユーザーがログアウトするとオブジェクトが削除されます..!

 Hawk.remove("user"); 
    Intent i = new Intent(UserSettings.this, LoginActivity.class); 
    UserSettings.this.startActivity(i); 

アプリが再び開いたら、表示されている最初の画面を確認してください。私の場合はスプラッシュ画面です。

 UserModel user = Hawk.get("user"); 
    Intent intent; 
    if (user != null) //if the user is null then the user was deleted from the logout process! 
    intent = new Intent(Splash.this, MyHome.class); 
    else 
    intent = new Intent(Splash.this, LoginActivity.class); 
    startActivity(intent); 
0

使用する共有設定は、お使いの携帯電話&クリアあなたがログアウトしたいセーブデータにデータを保存します。

private ProjectUtils utils; 
pref = (this.getApplicationContext()).getSharedPreferences("login_credential",MODE_PRIVATE); 


    //SharedPreferences 
          editor = pref.edit(); 
          editor.putBoolean("login_status",true); 
          editor.putString("user_id", String.valueOf(userId)); 
          editor.putString("password", String.valueOf(passwd)); 
          editor.putString("boy_id", String.valueOf(loginPojo.getBoyDetails().getBoyId())); 
          editor.putString("boy_name", loginPojo.getBoyDetails().getBoyName()); 
          editor.putString("boy_age", loginPojo.getBoyDetails().getBoyAge()); 
          editor.putString("boy_phone", String.valueOf(loginPojo.getBoyDetails().getBoyPhone())); 
          editor.putString("boy_dlno", loginPojo.getBoyDetails().getBoyDlno()); 
          // editor.putString("boy_user_id", email); 
          editor.commit(); 

上記のコードは、一意のキーにデータを保存するためのものです。

if(pref.getBoolean("login_status", false)) 
       { 
        Intent intent = new Intent(SplashScreen.this,MainActivity.class); 
        startActivity(intent); 
        Log.e("LOGIN","Yes"); 
       } 
       else 
       { 
        Intent intent = new Intent(SplashScreen.this,LoginActivity.class); 
        startActivity(intent); 
        Log.e("LOGIN","No"); 
       } 
関連する問題