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リクエストを作成するので、私はデータを返す前に。トークンが正しいかどうか、トークンが要求を行っているユーザーに対応しているかどうかを確認します。しかし、トークンの期限が切れた場合はどうなりますか?私は別のものを作りますか?期限切れでない別のトークンを返さなければならない場合は、ユーザーをログアウトしてパスワードを尋ねて、再度電子メールを送信する必要がありますか?
これを行う最も良い方法は何か分かりません。私が認証について作成した他の投稿では、多くのユーザーが私に第三者認証システムの使用を勧めましたが、私はそれを自分で開発したいと思います。トークンの有効期限が切れている場合、すべての
まず、おかげさまで、ありがとうございました。そこで私はアクセストークンとリフレッシュトークンを作成し、それをクライアントに送信します。クライアントは両方のフィールドを保存します。要求が行われてアクセストークンが期限切れになったとき、クライアントはリフレッシュトークンを使用して別の要求を行う必要がありますか? – JIFT
はい、あなたは正しいです。ただし、アクセストークンが期限切れになっているか無効である場合には、異なる応答コードを使用します。有効期限が切れている場合、クライアントはリフレッシュトークンを送信する必要があります。無効な場合、ユーザーは再度ログインする必要があります。 @JIFT –