c #에서 asp.net을 사용하면 세션 값이 이미 있는지 확인할 수있는 방법이 있습니다. 설명하기는 어렵지만 나쁜 시도입니다.
User1 로그인-사용자 이름 (jSmith)을 입력합니다.이 값은 user1을 식별하는 유일한 방법입니다. 암호 나 데이터베이스 항목이 만들어지지 않습니다. User2가 로그인하는이 정보를 보유하는 세션 변수가 만들어집니다.-이 값이 이미 존재하므로 사용자 이름 (jSmith)을 입력합니다. user2가이 값을 설정하는 것을 중지 할 수 있기를 원합니다.
감사합니다!
세션 변수의 내용은 각 사용자에게 고유합니다. 즉 Session["Foo"]
, 사용자 A의 Session["Foo"]
경우 사용자 B의 경우와 완전히 다릅니다 . 또한 세션 변수는 다양한 이유로 범위를 벗어날 수 있으며, 가장 일반적으로 메모리 부족입니다. 서버가 바쁠 때 사용자가 무작위로 '로그 아웃'하는 것을 싫어합니다.
Application
모든 사용자가 그 내용을 공유 하므로 객체 를 고려할 수 있습니다 . 또한 정적 개체가 교차 요청에 액세스 할 수도 있다고 생각할 수도 있습니다. 개인적으로 나는 정적 컬렉션에 데이터를 저장하는 것을 고려할 것입니다 (일종의 스레드 안전성이 내장되어 있기를 바랍니다) ...
예를 들면 :
public static class UserHelper
{
public static ConcurrentDictionary<string, DateTime> CurrentUsers = new ConcurrentDictionary<string, object>();
}
그런 다음 소비
if(UserHelper.CurrentUsers.TryAdd("jSmith", DateTime.Now))
return "User Login recorded.";
else
return "User already logged in, try again."
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다