2013-08-09 4 views
1

SimpleMembershipProvider를 사용자 이름과 암호 이상으로 로그인해야한다는 의미에서 사용자 정의 할 수 있습니까?SimpleMembershipProvider 사용자 정의

예를 들어, 내가 4 개 정보의 조각한다고 가정 : 단지 존/mypassword 또는 밥을 갖는

Login, Password, Abc, Xyz 
(Abc and Xyz are just generic placeholders, for now) 

Suppose your login is: 

john/mypassword555/1/1 (authenticated) -> pagex 
john/mypassword999/1/2 (authenticated) -> pagey 

bob/mypassword333/1/1 (authenticated) -> pagex 
bob/mypassword333/1/2 (authenticated) ->pagey 
bob/mypassword333/1/3 (authenticated) -> pagez 

을/mypassword333이 부족하다.

모든 로그인 또는 다른 비밀번호에 대해 동일한 비밀번호를 사용할 수 있기를 원하지만 Request.IsAuthenticated가 true가되기 전에 모든 4 개의 입력란이 필요합니다.

답변

0

나는 이것이 당신이 무슨 뜻인지 경우 잘 모르겠지만, : 당신은 데이터 A가 필요한 경우

, B 및 C 플러스 암호가로, 당신은을 저장할 수, B 및 C에 로그인하기 해당 객체를 문자열로 직렬화 한 다음 해당 문자열을 암호와 함께 "로그인"으로 사용자 지정 멤버 자격 공급자에 전달하면 암호가 개체를 해당 부분으로 다시 역 직렬화합니다. 이때 사용자 지정 공급자에서 원하는 모든 작업을 수행 할 수 있습니다.

+0

정상적으로 로그인하면 john11 (john/1/1) 및 john12 (john/1/2)와 같은 로그인이되므로 텍스트 입력 "john"멤버십 공급자는 멤버 문자열을 serialize 된 항목으로 취급합니다. johnABDEAWHATEVER ..... 당신이 말하는 것은 무엇입니까? 그렇다면, 나는 그것이 작동 할지도 모른다라고 생각한다. ... –

+0

그것은 꽤 더러운 해결책이고 공급자 인터페이스의 무결성을 깬다. 프로 바이더 모델은, 코드의 갱신을 필요로하지 않고, 모든 구현으로 스왑 아웃 할 수 있도록 (듯이) 설계되고 있습니다. 이렇게되면 애플리케이션에서 비즈니스 로직을 구현하고 다른 체크를 통과 한 후에 설계된대로 하위 사용자 API/사용자 이름/비밀번호를 사용하는 것이 좋습니다. – TheCodeKing

0

간단한 접근 방식은 기본 제공 멤버 자격 공급자를 사용하는 것입니다. 일단 로그인하면 추가 정보를 입력 할 다른 페이지로 가져갑니다.

추가 정보를 입력하면 사용자 지정 인증 필터를 사용하여 확인하는 세션/쿠키를 설정할 수 있습니다.

이렇게하면 Request.IsAuthenticated가 true로 평가되기 전에 4 개의 필드가 모두 제공되었는지 확인할 수 있습니다.

+0

이것은 내가 말하는 것이 아닙니다. 내가 말했듯이 로그인 할 수없고 추가 정보가 필요합니다. "john"이라는 사용자는 "password"라는 암호를 가지고 있지만 나머지 2 비트는 "x"와 "y"입니다. . 우연히 동일한 암호 "암호"(희귀하지만 일어날 수 있음)를 우연히 찾은 또 다른 사용자 "존"은 로그인하게됩니다. 다른 2 비트의 정보가 필요하지 않으면 IsAuthenticated가 참이되기를 원하지 않습니다. 아직. –