2016-08-28 19 views
1

PHPでREST APIを作成していますが、期限切れのトークンで何をしなければならないかという概念を理解する上で問題があります。私は、認証部分のMYSQLとJson Webトークンを持っています。PHP REST APIトークン期限切れフロー

DB構造

CREATE TABLE `users` (
    `id` int(11) NOT NULL, 
    `name` varchar(35) CHARACTER SET utf8 NOT NULL, 
    `lastname` varchar(35) CHARACTER SET utf8 DEFAULT NULL, 
    `password` text CHARACTER SET utf8 NOT NULL, 
    `email` varchar(50) CHARACTER SET utf8 NOT NULL, 
    `gender` enum('male','female') CHARACTER SET utf8 DEFAULT NULL, 
    `description` text CHARACTER SET utf8, 
    `email_verification` enum('unverified','verified','','') CHARACTER SET utf8 NOT NULL DEFAULT 'unverified', 
    `updated` datetime NOT NULL, 
    `created` datetime NOT NULL 
) ENGINE=MyISAM DEFAULT CHARSET=latin1; 

CREATE TABLE `device_tokens` (
    `id` int(11) NOT NULL, 
    `device_id` tinyint(4) NOT NULL, 
    `device_version` varchar(10) DEFAULT NULL, 
    `user_id` int(11) NOT NULL, 
    `token` text NOT NULL, 
    `update` datetime NOT NULL, 
    `created` datetime NOT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

LOGIN

私は、ユーザーとパスワードを使ってPOSTリクエストを作成し、検証が正しいかどうか、私はアクセストークン(JSONウェブトークン)を返し、次のデータを含む:

  • 電子メール
  • user_creation_date
  • 有効期限私はaccess_tokenは、DEVICE_TYPEとUSER_IDとPOSTリクエストを作成

LOGOUT。しかし、トークンがすでに期限切れになっている場合はどうなりますか?私はただ削除した?

他端POINT

for example 
/pets?id=1 

私はaccess_tokenは、USER_ID、およびxx_idでGETリクエストを作成するので、私はデータを返す前に。トークンが正しいかどうか、トークンが要求を行っているユーザーに対応しているかどうかを確認します。しかし、トークンの期限が切れた場合はどうなりますか?私は別のものを作りますか?期限切れでない別のトークンを返さなければならない場合は、ユーザーをログアウトしてパスワードを尋ねて、再度電子メールを送信する必要がありますか?

これを行う最も良い方法は何か分かりません。私が認証について作成した他の投稿では、多くのユーザーが私に第三者認証システムの使用を勧めましたが、私はそれを自分で開発したいと思います。トークンの有効期限が切れている場合、すべての

答えて

1

ため

おかげで通常はデータベースから削除し、ユーザーをログアウトする必要があります。しかし、ユーザーがアクティブであれば、サービスへの要求中に彼のアクセストークンの存続時間を延ばすことができるはずです。しかし、追加のパラメータリフレッシュトークンが導入された別の方法があります。この場合、フローは次のようになります。

  1. システムへのユーザログイン。 2つのトークンアクセスおよびリフレッシュが生成されます。
  2. ユーザーは異なるエンドポイントを要求し、アクセストークンのみを送信します。
  3. アクセストークンは期限切れです。ユーザーはリフレッシュトークンを送信してセッションの有効期間を延長します。
  4. リフレッシュトークンが無効または期限切れになっていると、システムがユーザーをログアウトします。
  5. リフレッシュトークンが有効な場合、アクセストークンの存続時間が延長されます。
  6. ユーザーは満足しており、サービスの利用を継続できます。
+0

まず、おかげさまで、ありがとうございました。そこで私はアクセストークンとリフレッシュトークンを作成し、それをクライアントに送信します。クライアントは両方のフィールドを保存します。要求が行われてアクセストークンが期限切れになったとき、クライアントはリフレッシュトークンを使用して別の要求を行う必要がありますか? – JIFT

+0

はい、あなたは正しいです。ただし、アクセストークンが期限切れになっているか無効である場合には、異なる応答コードを使用します。有効期限が切れている場合、クライアントはリフレッシュトークンを送信する必要があります。無効な場合、ユーザーは再度ログインする必要があります。 @JIFT –

関連する問題