アプリ版:「スタンプのみでお礼する」機能のリリースについて

多重ログインを禁止にしたいのですが…。

C♯、ASP.NET、DBはPostgresSQLという環境です。

WEBを作っているのですが、ログイン周りで悩んでいるので教えてください。
要件としては、多重ログインは許可しない、同一IDでログインに成功した場合、
先に入ったほうは強制ログアウトという話です。
たとえば、ユーザAがログインした後、別の端末からまたユーザAでログインすると、
最初にログインしたほうはログアウト状態になります。

ログイン情報を管理するテーブルを用意して、ログイン成功時に、そのユーザが
ログイン中のステータスだったら…とか考えてみたんですが、強制ログアウトへ
もって行く仕組みが思いつかず…。

何か手がかりや、参考サイト、またはサンプルなどアドバイスいただけないでしょうか。
宜しくお願いします。

A 回答 (3件)

クッキーにログイン時刻を書き込めばいけると思いますよ。



-----------------------
15:00 A端末でユーザーIDを"hoge"でログイン
→A端末クッキーにログイン時刻15:00と書き込み
→DBに"hoge"のログイン時刻15:00と書き込み
-----------------------

A端末で画面を開く際にクッキーのログイン時刻(15:00)="hoge"のDBログイン時刻(15:00)を比較して同一なので操作継続

-----------------------
15:30 B端末でユーザーIDを"hoge"でログイン
→B端末クッキーにログイン時刻15:30と書き込み
→DBに"hoge"のログイン時刻15:30と書き込み
-----------------------

A端末で画面を開く際にクッキーのログイン時刻(15:00)="hoge"のDBログイン時刻(15:30)を比較してDBログイン時刻が15:30へ更新されていて一致しないのでログアウト処理実行

B端末で画面を開く際にクッキーのログイン時刻(15:30)="hoge"のDBログイン時刻(15:30)を比較して同一なので操作継続
-----------------------
というロジックを今思いつきました。
参考程度にどうぞ
    • good
    • 2

ひとつの考え方ですが……。



強制ログアウト自体は、可能なのでしょうか?
もし、「この ID を強制的にログアウト」が可能であれば、ログイン処理の冒頭で、無条件にログアウトさせてしまうというのも処理の方法ではあります。

既にログインしていたらログアウト処理という方法にするのか、
ログアウト処理のほうを、「ログインしていないIDだったらなにもしない」というロジックにしておいて、ログイン処理の冒頭で、ログアウト処理という流れにするかという問題です。

ログインしてないなら、「ログインしていないIDだったらなにもしない」なので影響なし。
既にログインしていたら、(既にログインしている方のユーザーが)ログアウト処理。
    • good
    • 0

普通、後からログインしたほうに「すでにログイン済みです。

」みたいなメッセージ出してログインさせないようにすると思いますが・・・。
そんなに重要な要件なのでしょうか?
そうでないなら、難しいことを考えるのはやめたほうがよいです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!