2017-08-15 15 views
0

ユーザーがアプリをインストールすると、アプリで一意のIDが生成されて保存されます。一度に1つのデバイスへのログインを有効にする

ユーザーは、ユーザー名とパスワードでログインできます。ログインに成功すると、サーバーはOAuthトークンをアプリに送信します。トークンとリフレッシュトークンを将来の使用のために保存します。

しかし、新しいデバイスからログインしようとすると、以前の電話からユーザーをログアウトしたいと思う。

別のデバイスをログアウトするにはどうすればよいですか?

(私は、以前のデバイスからのOAuthトークンを削除したい。ないアプリがトークンを更新しようと、ユーザがログインすることができます。)私はログアウト・ロジックを処理したい

? 助けてください。

答えて

1

私は受け入れられた答えは正しい解決策だとは思わない。このロジックをクライアント側に持たないようにしてください。これにより、セキュリティ上の問題が発生する可能性があります。

サーバー側の古いoauthトークンを無効にするだけで、古いデバイスが次に受け取る古いトークンを使用するときに、400のinvalid_grant例外がログアウトする必要があります。

+0

はい。どのデバイスのユーザーがログインしているかをどのように知ることができますか? –

+0

OAuthログインメソッドをオーバーライドする必要はありますか?そうでない場合、OAuthは同じユーザに新しいトークンを与えます。 (2人のユーザーが同時にログインできます) –

+1

Roshan、私はあなたのoauthの実装がわかりません。私は詳細に行くことができません!ポイントは、ログインしているユーザーアカウントの古いリフレッシュトークンを無効にする限り、最新のものだけがアクティブになり、他のデバイスが古いトークンでAPIにアクセスしようとすると、ログアウトされます。 –

1

以前にログインしたデバイスに通知を送信してログインを削除できます。または、ログインがサーバーや既にログインしている別のデバイスで有効な場合は、アプリが起動するたびにバックグラウンドでチェックを行います。すでにログインしている別のデバイスでは、ユーザーがアプリに入り、アプリからログイン認証情報を削除しないようにします。

+0

したがって、別のデバイスからユーザーがログインしたとき。ログインが成功した後、私は別の呼び出しでデバイスIDを生成する必要がありますか?ユーザー名、パスワード、デバイスIDでログインする私はデバイスIDを渡すことはできません。 –

+0

ええ、別の電話でデバイスIDを更新する必要があります。 –

+0

ユーザーがプログラムでログインしてアプリを悪用しても、バックエンドに電話することはできますか? –

関連する問題