첫 번째 사항 먼저 : 세션에 사용자 비밀번호를 저장하지 마세요 - 끔찍한 보안 문제!
지금 응용 프로그램을 작성하는 경우 Identity framework을 사용하는 것이 좋습니다. 여기서 사용자 신원에 대한 클레임을 추가 할 수 있습니다. 클레임 목록은 문자열 대 문자열 사전입니다. 원하는 경우 언제든지 클레임을 조회 할 수 있습니다.
그래서 당신은 다음이 데이터를 얻을 확장 방법이 쉽게 자신의 휴대 전화 번호, 이메일 및 생성 날짜와 함께 사용자에게 청구를 추가 할 수 있습니다
public static bool GetEmail(this ClaimsPrincipal principal)
{
if (principal == null)
{
return false;
}
var emailClaim = principal.Claims.SingleOrDefault(c => c.Type == "Email");
if (emailClaim == null)
{
return String.Empty;
}
return emailClaim .Value;
}
을 다음과 같이이 메서드를 호출 :
을
ClaimsPrincipal.Current.GetEmail()
클레임은 암호화 된 쿠키의 사용자를 따르고 있습니다.
UPD : 인증 후에 필요하지 않으므로 세션에 암호를 저장하면 안됩니다. 사용자의 유효성을 검사하고 인증 쿠키가 설정되면 메모리에서 암호를 제거해야합니다. 세션 데이터가 인증 된 후에 세션에 보관하면 상황이 발생할 수 있습니다. 예를 들어 stacktrace가 ELMAH로 덤프되고 ELMAH가 세션 변수를 일반 텍스트로 노출하는 경우를 생각해 볼 수 있습니다. 또 다른 상황은 Glimpse가 사용될 때입니다 - 세션 데이터를 보여줍니다.
신원의 사회적 측면 - 모든 것을 무시하고 내부 사용자 목록으로 만 앱을 만들 수 있습니다. 방금 내 프로젝트 중 하나를 MembershipProvider에서 Identity로 마이그레이션했으며 사회 인증에 의존하지 않았습니다.
VS2010 (업그레이드하지 않으시겠습니까?)에서 Identity는 Entity Framework 6.1에만 종속되지만 MVC 또는 다른 어떤 것에 의존하지 않으므로 Database First EF를 사용하지 않는 한 Identity는 문제가되지 않습니다. 이 경우 VS2010에서는 EF6.1 툴링이 작동하지 않을 수 있습니다. 그러나 VS2010에서이 작업을 시도하지 않았으며 사이트와의 ID 통합을 시뮬레이트하는 VS2010의 작은 테스트 프로젝트를 만드는 것이 좋습니다.
"사용자 암호를 세션에 저장하지 마세요 - 끔찍한 보안 문제!"라고 말합니다. 더 잘 설명해 주시겠습니까? 또한 링크에서 "사용자가 자신의 응용 프로그램에 등록한 사용자 이름과 암호를 입력하여 로그인한다는 가정은 더 이상 유효하지 않습니다."라고 말하면서 "현대 회원 시스템은 다음을 가능하게해야합니다. 리디렉션 기반 로그인을 Facebook, Twitter 및 기타와 같은 인증 공급자에게 제공합니다. " 나는 엔터프라이즈 애플리케이션을 만들고있다. 사회적 부분은 나에게 쓸모가 없다. 나는 여전히'asp.net Identity '를 찾고 있을까? 또한, Visual Studio 2010 – chiapa
@chiapa를 사용하여 방금 내 대답에 대한 편집 질문에 대한 답변을 추가했습니다. – trailmax