Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft: Cookieでの認証 #128

Open
wants to merge 2 commits into
base: develop
Choose a base branch
from
Open

Conversation

rkun123
Copy link
Contributor

@rkun123 rkun123 commented Nov 27, 2022

今まで: LocalStorageにアクセストークンとリフレッシュトークン

  • LocalStorageはJavaScriptのAPIから取得することができるため、期限の短いアクセストークンと、それを再取得するためのリフレッシュトークンを利用していた。

以後: Cookieにアクセストークン(JWT)を格納

set-cookieヘッダーに有効期限が数日のJWTを格納し、

  • SameSite=Strict
  • HttpOnly

といった属性を設定する。
これによって意図しないサーバーにCookieが送信されることはなく、JavaScript上からも取得は出来ないが、Ajaxリクエストにはブラウザが自動でCookieを付与するため、問題ない。

ログイン処理

ログイン処理は今までよりもシンプルになる。
認可後、Discordからサーバーに対してリダイレクトされるとサーバー側でJWTを生成する。
その後、クライアントへリダイレクトする際にレスポンスへset-cookieヘッダを付与しておく。

フロントエンド側ではmiddlewareにて/users/@meをリクエストし、200が返れば認証済みとしてauthStoreにユーザー情報を保存。403を返された場合は、認証済みでは無いため保存せず続行する。

ログアウト処理

set-cookieヘッダにてexpiredを現在時刻に設定することで削除する

@PigeonsHouse PigeonsHouse force-pushed the feature/cookie-based-auth branch from b5eb45a to 8604690 Compare April 15, 2023 05:23
@PigeonsHouse
Copy link
Collaborator

リンターの修正がPRに入っているとマージしにくかったのでdevelopにrebaseしてforce pushしました。
リンターの修正のPRは別途分けてPR作成します。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants