JavaScriptクライアントから利用されるPHPRESTAPIを構築していますが、認証とアクセスの側面を実装する方法を理解するのにいくつかの問題があります。私が開発しているJavaScriptライブラリを使用して、アプリケーションと対話したり対話したりするアプリケーションが複数あります。それぞれにAPIキーを提供するので、それは問題ではありません。
私が混乱し始めるのは、これらのサイトのユーザーに私のアプリケーションを認証させる方法です。この外部サイトにユーザーのアカウントとパスワードの情報を保存させるのは悪い考えのようです。したがって、JavaScriptライブラリに、アプリケーションのユーザーのアカウント情報を要求するログインウィジェットを含める必要があると思います。
ここで認証が成功した場合、REST APIを使用しているため、取得したトークンをクライアント側のCookieなどに保存して、ユーザーがのすべてのページでアプリケーションに再度ログインする必要がないようにする必要があります。外部サイト。ただし、ユーザーが外部サイトからログアウトしてから、別のユーザーが同じブラウザーからログインした場合はどうなりますか?JavaScriptライブラリに関する限り、Cookie /トークンの有効期限がまだ切れていないため、古いユーザーは引き続きアプリケーションにログインします。前のユーザーのセッションが終了したときにCookieをクリアするにはどうすればよいですか。または、私はここで完全に正しい道から外れていますか?
したがって、プロセスは次のようになると思います。
var token; // Some hashed string containing an expiration date and user id
var apiKey = '123abc';
// Read the cookie and check if it already contains the token
token = readCookie('token');
if (token == '') {
// get username and password from user through some prompt
var request_data = {apiKey: apiKey, user: username, pass: password};
$.post('https://service.com/api/user/login', request_data, function(data) {
token = data;
document.cookie = "token=" + token;
});
}
...
var get_data = {apiKey: apiKey, token: token};
$.get('http://service.com/api/<object>', get_data, function(data) {
// Do something with data
});
申し訳ありませんが、ここにはいくつかの質問が埋め込まれています。主なものは、トークンをCookieに保存している場合ですが、ユーザーが外部アプリケーションからログオフしたときにトークンがクリアされるようにするにはどうすればよいですか?または、Cookieに保存する必要がない場合、クライアントにユーザーの状態を認識させるにはどうすればよいですか?