2016-12-21 10 views
0

クロックイン/アウトサイトについてユーザーAがログインすると、チェックイン/チェックアウトが表示されます。ユーザーBがログインします.Aがページをリフレッシュすると、Bのチェックイン/アウトが取得されます。
私は恐らく、ユーザーがサーバー側にログインしたときにパブリック変数にユーザー名を格納しているので、これは間違っている可能性があります。ASP.net複数のユーザーがログインしました

if (publiclasses.isValid == true) 
    { 
     publiclasses.unilogin = UserNametextbox.Text.ToString(); 
     publiclasses.Checkifmissinglogout(); 
     Response.Redirect("checkin.aspx"); 
    } 

保存されている古いものを上書きするのではなく、「ユニーク」な方法でユーザーを保存するにはどうすればよいですか?

+0

ログインとデータ取得のコードをさらに表示できますか?これは何がうまくいかないかを見るのに十分なコードではありません。あなたのデータはどこに保存されていますか? (セッション中、データベース内のローカルストア?) –

+0

複数のユーザーに対してクッキーまたはセッションを使用してみてください。ユーザーを簡単に処理するセッションを改善する。私はあなたのコードのようなものを見ることができません。 –

答えて

2

パブリック変数を使用すると、すべてのユーザーセッションで共有され、並行性の問題が発生します。これらのすべては静的であるとみなします。

セッションを分割するには、セッションを使用する必要があります。

例:あなたは

+0

、ありがとう! –

0

あなたはいくつかの種類を実装する必要があり、現在、パブリック変数を参照しますが、コードのどの部分でセッション変数を使用していることを確認する必要が

Session["unilogin"] = UserNametextbox.Text.ToString(); 

場合についてアイデンティティあなたユーザー。これを行うには多くの方法がありますが、それはあなたのために最適な正確なASP.NETの変形に依存しています。ほとんどのウェブアプリケーションはこれにcookiesを使用します。

基本的に、ユーザAがサインインすると、Aというクッキーが取得されます。それ以降のすべてのリクエストには、そのクッキーが添付され、どのユーザから取得したかを取得できます。

その非常に簡単に言うと、これは非常に簡単です:

// In sign in POST back 
Response.Cookies.Append("user", username); 

// In further pages: 
string username = Request.Cookies["user"]; 

しかし、これがあることをふりをするためにBのために、それは非常に簡単になります - それは安全ではありません。組み込みの.NETメソッドは、より安全な暗号化されたCookieを作成します。

関連する問題