忍者ブログ

ひつ(じのひよこが)プログラミングします。
お仕事や趣味で困ったこととか、何度も「あれ?どうだったかしら」と調べたりしたこととか、作ったものとか、こどものこととかを書きます
★前は週末定期更新でしたが今は不定期更新です

2024/05    04« 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  »06

ゆとシート2のログイン周りの挙動を確認した

ゆとシート2のログインに Discord のアカウントでのログインを追加したいので、現状のログイン周りの機能についてまとめた。1.06.1 をベースにしている(1.06.1 のソースコード)。

基本事項

以下の手順で動く。ユーザは新規登録を済ませているものとする

  1. ユーザがログインページにアクセスする
  2. ユーザがログインページから ID とパスワードを送る
  3. サーバで ID・パスワードの妥当性が確認出来たらセッショントークンを返却する

詳細

ログインページに飛ぶ

index.cgimode=login のパラメータを URL 経由で渡すとログインページに飛ぶ(ソースコード)。

なお、mode=login でも id も添えてある場合はログインそのものの処理に飛ぶ(ソースコード)。

ログインページでの処理

ログインページは form.html に html がある。パラメータに応じて出力される html が違うので注意。

form で情報を送信し、mode (login で固定)、id そして password を引数として post する。

ID と password を受け取ったら

本丸。index.cgimode=login であることと id があることを確認したらログイン処理に入る。 ログイン処理はsubroutine.plに記載されている。

log_in$_[0] に id を、$_[1] にパスワードを取っている。
まず、key_get を呼び出し ID・パスワードの妥当性を検証し(ソースコード)、
妥当ならば key (セッショントークンの役割を果たす) を発行している(ソースコード)。
然る後にセッショントークンを実際に使う形にして内部で保存(ソースコード)、
ブラウザに返却する Cookie に準備する(ソースコード / こちらも)。

セッショントークンは [ユーザ名]<>[KEY] の形をとる。例えばユーザ名が Shunshun94 ならば Shunshun94<>EtlPXgjAOJTWShunshun94<>owRCPLfzkDP7といった値となる。実際にユーザに渡されたり内部で保存されたりするのはこの形である。

しかる後に結果をブラウザに返却する。

関連する設定

上述の機能追加に関連する既存の機能について。

ログインしていないとデータに変更を加えられないようにする

$user_reqdを1にすればよい。

管理ユーザの設定

管理ユーザは$masteridで設定する。多分設定が難しくなるので注意。

PR

コメント

ただいまコメントを受けつけておりません。

ブログ内検索

P R