NASCAR problemを軽減できるかもしれない簡単な実装とさらなる妄想

f:id:ritou:20210819183905p:plain

こんばんは、ritouです。

いつもお友達同士でキャッキャウフフさせていただいているTwitterにてこんな投稿をしたところ、珍しくたくさんの反応をいただけました。

簡単に説明すると、

  • ソーシャルログインとかメアド/パスワードとかでログインできるサービスがある
  • 一度ログアウトして再びログイン画面を訪れると、「お前は前回Facebookでログインしたよな」って教えてくれた
  • どれ使ってたっけ...で迷わない!いい感じ〜

ってな話です。

どう実装されているか

  • ログインセッションそのものを扱うCookieとは別のCookieに認証方法を保存
  • ログイン画面ではその値を見て表示出しわけ

と言うようになっています。

f:id:ritou:20210819180525p:plain

ちなみにここを "tw" に変更すると、お前前回Twitter使ってたよな!?になります。

値の保存方法はCookieでもlocalStorageでも良いでしょう。 持ってる情報としてもそんなにセンシティブな扱いではなさそうです。

Googleのような細かく情報を残したログアウト状態を実装したわけではなく、単純に方法のみを残しておくだけでシンプルに実装可能です。 スマホ時代にあまりログアウトしないけどな〜って言うコメントもありましたが、それはそうですね。必ずしもみんなに需要があるわけではないでしょう。 しかし、PC向けのサービス、複数の認証方式を採用しているサービスは、あまり考えずにこれを使ってみても良いのではないでしょうか。

さらなる妄想

ここからは妄想です。

引用RTであったのが、「新しい端末でもこれできるといいな」ってやつです。

それに対して「その辺りはブラウザに頼みましょうや」と答えています。 この発言の背景としては、次のような展開を想像してのことです。

例えば

  • lastSignInMethod.set(method), lastSignInMethod.get() みたいなブラウザのAPIが定義される
    • ログイン成功時に lastSignInMethod.set("fb") を呼ぶ
    • ログイン画面で lastSignInMethod.get() を呼ぶ

みたいな標準化が行われたとします。 すると、「このサービスで前回何でログインしたか」を統一的な方法でブラウザに覚えてもらうことができるようになりますね。

少し別の話をしましょう。 この前、WebOTPの拡張についての記事を書きました。

ritou.hatenablog.com

この記事で紹介されている仕組みでは、ChromeではPCとAndroidで同じGoogleアカウントでログインすることでAndroidChromeにて受信したWebOTPをPCのChromeの方に送られます。 また、パスワードの同期の仕組みがあれば別環境の同一ブラウザで過去に利用したサービスを訪れた時に保存しておいたパスワードを自動入力することも可能でしょう。

こう言う仕組みを今回の「前回のログイン方法」にも当てはめるとどうなるでしょう。

  • PCであるサービスにFacebookでログインする
  • Androidのブラウザでそのサービスを開いてログイン画面に行った時に、「前回Facebookでログインしましたよね」みたいな表示になる

っていうのが実現できそうではないですか?ここまでできるとわりといろんな人が幸せになれそうです。

以上、単純な機能だとしても、いわゆるWeb標準的な仕組みにしてブラウザベンダーが頑張ってくれたら夢が広がりますね〜っていうお話でした。 こういう細けぇお話ができる場が少ないな〜って思いましたが、自分が勉強会をしていないからでした。申し訳ございません。

ではまた!