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

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

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

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

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

このQ&Aに関連する最新のQ&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
    • 1

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

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

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



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

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

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

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

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

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

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

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

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

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

Aベストアンサー

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

-----------------------
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)を比較して同一なので操作継続
-----------------------
というロジックを今思いつきました。
参考程度にどうぞ

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

-----------------------
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に"ho...続きを読む

Q1台目のパソコン操作ログイン・ログアウト可能?

我が家にはパソコンが3台あります。
子供がゲームばかりやって困ってます。
私が1台目のパソコンをつかっております。
yahoo bb adsl bbフォン+無線lanパック
ゲーム時間は18時~21時までにしたいと思います。
そこで 1台目のパソコンより操作する事できないですか?

早い話しが1台目のパソコン操作でログイン・ログアウトのような感じです

説明がうまくできなくすみません。

Aベストアンサー

フリーウエアで以下のような物があります。
簡単にリモート操作可能です。

UltraVNC
http://www.forest.impress.co.jp/lib/inet/servernt/remote/ultravnc.html

RealVNC
http://www.vector.co.jp/soft/dl/win95/net/se324464.html



また、併せてシャットダウンソフトを用いて指定した時刻に
強制的にシャットダウンする方法も有効ではないかと思います。
これなら時間を気にして監視しておく必要もありません。
が、自動シャットダウンしても電源ボタンを押されたら起動してしまうので
ログオンパスワードを設定する必要もあるかと思います。


http://www.forest.impress.co.jp/lib/sys/hardcust/shtdownuty/
一例ですので他にも良い物があると思います。

Qログアウト後の再ログインができない

ユーザID、ログインパスワ-ドログイン後、合言葉を後で設定で一度目はログインできましたが、ログアウトして再度ログインしようとしたとき、又前回と同様に不正な操作が行われました。
ログインID、パスワ-ドは間違っていないことを確認しました。すみませんがもう一度教えてください。
また、ログアウトを忘れてイ-バンクのサイトを終了した場合、どのようにすれば、ログインできるでしょうか?

Aベストアンサー

どれくらいはわからないのですが
イーバンクは正しくログアウトしないと
一定期間ログインできないはずですので
しばらくまってからログインしてください

Qログインしますがログイン出来ません

使っているPCはVALUESTAR SR VR500DD
なんですが、一部のサイトではログインしてログイン完了画面が出ているのにログインされていません。
何か設定を変えればいいのでしょうか?
返答お願いします。

Aベストアンサー

XPのようですが、ブラウザがIE7の環境でしたら「ツール」「インターネットオプション」「セキュリティ」「レベルのカスタマイズ」レベルを「中高」から「中」に下げるか、「コントロールパネル」「プログラムの追加と削除」でIE7を削除するとIE6にロールバックします。
(IE7では表示しないサイトがあるようです)
それともIE6ですか?

QXPでユーザーを新規に作成後、Administratorでログインでき

XPでユーザーを新規に作成後、Administratorでログインできない

「コンピュータの管理」で「test」というユーザーを新規に作成しました

再起動後、ログイン画面で、ログインするユーザを選択し、ログインするのかと思いましたが、
自動でtestユーザーでログインするようになり、Administratorでログインができなくなりました。

Administratorでログインする方法を教えてください。

Aベストアンサー

「XP Administrator ログイン」、「XP Administrator 表示」などで検索すればヒットします。

一時的にAdminでログインしたい。
http://allabout.co.jp/computer/windows/closeup/CU20051108B/

ようこそ画面にAdminを表示したい。(レジストリをいじる)
http://trendy.nikkeibp.co.jp/article/tec/winxp/20021004/102171/

あと、「ファイル名を指定して実行」で"control userpasswords2"と入力して実行すれば、Windows2000まで使用していたアカウント設定画面が出るので、XPのアカウント設定画面よりも詳しく設定できます。

Qユーザーでログインした状態で管理者でログイン

できる方法があると聞いたことがあります。
「スタート」-->「ファイル名を指定して実行」-->
そこでcmd なんとか ドメイン名 なんとか かんとか....って入力するって聞きました、がそのメモを紛失しました!!

どなたか教えて下さい!!

Aベストアンサー

ユーザーの切り換えをすることで、ログオンしたまま別ユーザでログオンできます。

コマンドでというと、
Runas コマンドを使って別ユーザの権限でプログラムの実行ができます。
勘違いコメントだったらすみません

Qログインしたら他からログインできないようにしたい

PHP+MySQLで会員サイトを作っています。

1. 誰か一人がログインしていたら、そのログイン会員と同じIDとパスワードでログインしようとするとログインできないようにするか、元のログインしていた人が強制的にログアウトするようにしたい。

2. 一人のユーザーが複数アカウントを作って会員サイトを使いたい放題にするのを阻止したい。
そのため、「PC1台からは必ず1ユーザーのみしかログインできないようにしたい」です。
(複数PCを使われたら仕方ないかもしれません・・・)

よく銀行サイトのようにログイン中に他のブラウザや端末からログインしようとすると「すでにログイン中です。ログインし直しますか?」のようになりますが、1.はこんな感じを考えています。

仕組みとしてはどのようにするのが良いのでしょうか?

1. ログイン時にセッションIDを作り、データベースにそのセッションIDとIPアドレスを記憶しておいて、Web上で何か操作するたびにブラウザ側のセッションIDとデータベース側のセッションIDを比べて同じなら操作を実行し、違うなら操作できないようにする。

2. ログイン中に別のブラウザからログインしようとすると、データベース側に保存されているセッションIDが違うのでログインできないようにする。

3. 同じIPアドレスですでにログイン中の場合、同じPCからは他のアカウントでログインできないようにする。

こんな感じでしょうか?
何か問題点やそもそもこの仕組は間違っていて常套手段があるなどありましたらお教えください。
なんとなく、IPアドレスのチェックはWiMAXなどは時間とともに変わったりするのであまり良くはないかもしれません。

どうぞよろしくお願い致します。

PHP+MySQLで会員サイトを作っています。

1. 誰か一人がログインしていたら、そのログイン会員と同じIDとパスワードでログインしようとするとログインできないようにするか、元のログインしていた人が強制的にログアウトするようにしたい。

2. 一人のユーザーが複数アカウントを作って会員サイトを使いたい放題にするのを阻止したい。
そのため、「PC1台からは必ず1ユーザーのみしかログインできないようにしたい」です。
(複数PCを使われたら仕方ないかもしれません・・・)

よく銀行サイトのようにログイン中...続きを読む

Aベストアンサー

何件か参考になるQ&Aがありました。

【Google検索結果】
https://www.google.co.jp/search?q=php+%E5%A4%9A%E9%87%8D%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3+%E9%98%B2%E6%AD%A2

「ログアウトせず、ブラウザを閉じたりするとログイン情報がが残り、最終アクセス日時からタイムアウト時間が経過するまでログインできません。」

これは大問題です。基本的に "操作出来ないようにする" という方針はやめたほうがいいです。 そうではなくて、新しくログインしようとしたときに "既存のセッションを終了させる" という方法を採ればすんなり解決できます。実際、私がやっていたネットゲームではこの方法が採られていましたww

IPアドレスに関してですが…いわゆるガラケーであれば個体識別番号というものがありましたが、現状ほとんどのデバイスではそういったものは存在せず、ユーザーに特別なソフトウェアをインストールしてもらわない限り、IPアドレスで判別するしかありません。これは妥協すべき点だと思います。

逆に…ガラケーにも対応させるのであれば、IPアドレスだけでのチェックは不十分です。何故ならば、複数のユーザーが同一のプロキシサーバーを経由してインターネットにアクセスするため、ユーザーが違ってもIPアドレスが一致するケースが大いにあるからです。個体識別番号が環境変数に存在しているかどうかを調べ、存在していればそれを使用し、存在しないならばIPアドレスを使用する、といった工夫が必要になります。


今回の件とは直接関係ないですが参考にどうぞ↓

Qiita - PHPでデータベースに接続するときのまとめ
http://qiita.com/mpyw/items/b00b72c5c95aac573b71

何件か参考になるQ&Aがありました。

【Google検索結果】
https://www.google.co.jp/search?q=php+%E5%A4%9A%E9%87%8D%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3+%E9%98%B2%E6%AD%A2

「ログアウトせず、ブラウザを閉じたりするとログイン情報がが残り、最終アクセス日時からタイムアウト時間が経過するまでログインできません。」

これは大問題です。基本的に "操作出来ないようにする" という方針はやめたほうがいいです。 そうではなくて、新しくログインしようとしたときに "既存のセッションを終了させる" とい...続きを読む

QffftpでftpサーバーにログインしてもDefaultRootフォルダにログインしてくれない

CentOSにwindowsでftpサーバーを接続を試みているのですが、
問題が発生し解決しませんので質問させて下さい。
サーバーとクライアントのどちらに原因があるか解らないので
その他に投稿しました。
カテゴリ違っていたらごめんなさい。
===============================================================
発生している問題
 「ffftpでftpサーバーに接続しても、
  proftpd.confのDefaultRootで設定した
  DefaultRootに行かない」
===============================================================
やりたいこと
「ffftpでログインした時に
 proftpd.confのDefaultRootで設定した
 ディレクトリにログインさせたい」
===============================================================
・知りたい事
「ffftpでログインした時に
 proftpd.confのDefaultRootで設定した
 ディレクトリにログインさせるにはどうすれば良いか?」
===============================================================
環境
 サーバー側
  OS CentOS 5.0
  FTPサーバー ProFTPD Version 1.3.2
 クライアント側
  OS windows XP
  FTPクライアント ffftp ver 1.17

 サーバーとクライアントはローカルエリア内にあり、
 サーバーは外部公開していない
===============================================================
現在の状況
・ffftpからftpサーバーへはログインできる
・しかし、ffftpのログイン先が/ディレクトリになる

・windowsのエクスプローラーに
 ftp://***.***.***.***(***~はIPアドレスです)
 を入力してftpサーバーに接続すると
 proftpdのproftpd.confで設定したディレクトリにログインする

・proftpd.confでのDefaultRootの設定
 DefaultRoot /var/www/html

・ffftpの設定
 拡張タブ
  FireWallを使う - 未チェック
  PASVモードを使う - 未チェック
  フォルダ同時移動を使う - 未チェック
  セキュリティ - 使用しない
  接続時にホストに送るコマンド - 未設定
 高度タブ
  LISTコマンドでファイル一覧を取得 - チェック済み
  NLST-Rを使って高速に再起検索 - グレーアウトになっている
  フルパスでファイルアクセスしない - 未チェック
  属性変更コンマンド - SITE CHMOD
  ホストの種類 - 自動認識
  NLSTファイル名/オプション -alL
================================================================
試した事
・ffftpの設定を変更する
 LISTコマンドでファイル一覧を取得 のチェックを外した
 -結果変わらず
================================================================
推測
 ・windowsのエクスプローラーでIPアドレスを入力して
  FTPサーバーへログインした時はDefaultRootで指定したフォルダに
  ログインしているのだから、サーバー側の設定は合っていて
  ffftpの設定が誤っているのではないか?
  (自信無いです…)
================================================================
これが現在の状況です。
長くて要点を纏められてませんが
どなたかアドバイス宜しくお願いします。
また、何か不足している情報があれば
可能な限り書こうと思いますので宜しくお願いします。

CentOSにwindowsでftpサーバーを接続を試みているのですが、
問題が発生し解決しませんので質問させて下さい。
サーバーとクライアントのどちらに原因があるか解らないので
その他に投稿しました。
カテゴリ違っていたらごめんなさい。
===============================================================
発生している問題
 「ffftpでftpサーバーに接続しても、
  proftpd.confのDefaultRootで設定した
  DefaultRootに行かない」
==============================================================...続きを読む

Aベストアンサー

DefaultRoot /var/www/html
を設定していると、 FTPクライアントにとっては、/var/www/html が /と見えるようになるはずです。

つまり、ftpクライアントとしては、
ルートディレクトリの / として、仮想的に見えてはいるけど、
それは、実際には、サーバーの/var/www/html です。

それを意識して、ffftpのホスト設定をすればいいのではないでしょうか?

QSkypeのログイン状態について

最新バージョンのスカイプを使い始めました。

以下、箇条書きになってしまいますがSkypeに詳しい方お願いします。

1.自分のログイン状態をリストの人に対して個別に変える事は出来ませんよね?
  マイクロソフトメッセンジャーなどでは出来ましたけど。(外部ツールなどで可能?)

2.前回のログイン状態でログインしてしまうのでしょうか?
  前回ログアウトする際に「取り込み中」なら次回ログインした時には「取り込み中」でログイン、
  「ログイン状態を隠す」に変更しても、一瞬相手にはログインしたことが分かってしまう?

3.複数のアカウントを所有している場合は、それぞれのIDの最後の状態でログインしてしまう。
  

4.取り込み中の人にチャットを送った場合、相手に届くのは「取り込み中」か「オフライン」以外
  である。「ログイン状態を隠す」では届く。

よろしくお願いします

Aベストアンサー

> 1.自分のログイン状態をリストの人に対して個別に変える事は出来ませんよね?

できません。
Skype名を複数登録して使い分けるしかないですね。Skypeを多重起動しれば、同時に複数のSkype名でログインする事もできます。

> 2.前回のログイン状態でログインしてしまうのでしょうか?
>   前回ログアウトする際に「取り込み中」なら次回ログインした時には「取り込み中」でログイン、
>   「ログイン状態を隠す」に変更しても、一瞬相手にはログインしたことが分かってしまう?

取り込み中の表示は、ログインしてから手動で状態を変更しないと表示できません。
従って、取り込み中のままパソコンの電源を落とした(休止状態など)場合にその様になりますね。

> 3.複数のアカウントを所有している場合は、それぞれのIDの最後の状態でログインしてしまう。

ログインしたままパソコンの電源を切った(休止状態など)場合の話ですね。

> 4.取り込み中の人にチャットを送った場合、相手に届くのは「取り込み中」か「オフライン」以外
  である。「ログイン状態を隠す」では届く。

そうなりますね。

> 1.自分のログイン状態をリストの人に対して個別に変える事は出来ませんよね?

できません。
Skype名を複数登録して使い分けるしかないですね。Skypeを多重起動しれば、同時に複数のSkype名でログインする事もできます。

> 2.前回のログイン状態でログインしてしまうのでしょうか?
>   前回ログアウトする際に「取り込み中」なら次回ログインした時には「取り込み中」でログイン、
>   「ログイン状態を隠す」に変更しても、一瞬相手にはログインしたことが分かってしまう?

取り込み中の表示は、ロ...続きを読む

QApacheでユーザの環境変数をログに残したい

Apacheでサーバを構築しています。アクセスログを取得したいのですが、リバースプロキシを介してアクセスされるので、すべてのクライアントが同じIPアドレスになってしまいます。ブラウザ(?)の環境変数みたいなものを使用して、クライアントのローカルアドレスをログに残すことは可能でしょうか?

Aベストアンサー

本来、IPアドレスはリクエストに含まれてわかるものだから、クライアントアドレスはプロキシのアドレスとしてしか取得できませんね。

あ、JavaScriptやFlashのActionScriptをホームページに仕込んでおけば、マシンのIPを送信させることが出来る「かも」知れないけど、ブロードバンドルーターなどが使われていれば、取得さえるIPはローカルIPなので、役に立つ情報では無いと思います。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング