약간 기괴한 요구 사항이있는 사용자 정의 멤버십 제공 업체 구현
-
06-09-2019 - |
문제
모바일 사용자가 핸드셋에서 콘텐츠를 구매 및 다운로드 할 수있는 새로운 모바일 웹 플랫폼 구축. 과거에는 완전히 맞춤형 로그인 메커니즘을 사용했지만 다음 버전의 플랫폼에 맞춤 멤버십 제공 업체를 사용하여 조사하고 있습니다.
문제는 약간 이상한 "로그인"메커니즘 요구 사항이 있으므로 멤버십 전문가가 가장 적합하다고 100% 확신하지는 않습니다.
"예, 멤버십 제공 업체가 적합하다"또는 "아니오, 둥근 구멍에 정사각형 페그를 두드리는 것"으로 아래 요구 사항에 대한 일반적인 피드백을 찾고 있습니다.
요구 사항
사용자는 "휴대 전화 번호"(사용자 이름) & "핀"(비밀번호)으로 로그인해야 할 수도 있습니다. 이미 SMS로 가입하고 확인했으며 만족하므로 매우 잘 맞습니다.
ValidateUser(string username, string password)
방법 구현사용자는 "휴대 전화 번호"만으로 로그인해야 할 수도 있습니다. 이 경우, 우리는 신분증 검증을 귀찮게하지 않습니다. 사용자의 단계 수를 줄이고 청구를 시도 할 때 특정 연산자가 확인합니다. (운영자는 휴대폰 번호가 입력되었음을 확인하고 운영자 지불 사이트에 부딪 칠 때 핸드셋과 일치합니다) ... 따라서 사용자는 비밀번호를 가지고 있더라도 어딘가에서 멤버십 제공 업체를 허비해야합니다. 빈 암호로.
사용자는 전혀 로그인 할 필요가 없습니다. 이 경우 사용자를 특수 네트워크 운영자 웹 페이지로 투명하게 바운스 할 수 있으며 투명하게 튀어 오르면 헤더로 휴대 전화 번호를 얻을 수 있습니다. 이 경우 헤더에서 해당 숫자를 프로그래밍 방식으로 가져 가서 코드를 대신하여 로그인을 수행해야하며 (핀/비밀번호없이) 사용자는 마술처럼 자동 로그인됩니다.
요구 사항 2 & 3은 약간 이상합니다. 우리는 본질적으로 하나의 멤버십 제공 업체가 만족해야 할 3 가지 로그인 메커니즘을 가지고 있습니다.
- 사용자가 모바일 및 사용자가 입력 한 PIN을 입력했습니다
- 사용자가 모바일 만 입력했습니다 (뒤에 코드는 핀 요구 사항을 충족한다고 가정합니다)
- 완전히 투명한 로그인 (전체 로그인 프로세스를 수행하기위한 코드)
누구나 위의 의견/피드백을 받거나 과거에 수행 한 기괴한 멤버십 제공 업체 구현에 대한 조언이 있습니다.
해결책
나는 그것이 효과가 있다고 생각합니다. 우리는 우리 사이트 중 하나에서 #3을합니다. 다음은 우리가 그것을 처리하는 데 사용하는 코드 덩어리입니다. 이를 사용하려면 로그인 페이지 (TransparentLogin.aspx 또는 이와 유사한 것)를 작성하려면 Web.Config 파일 이이 페이지에 익명으로 액세스 할 수 있는지 확인하고 TransparentLogin.aspx 페이지의 Page_Load 함수에 이와 같은 코드를 넣으십시오.
const string specialpassword = "ThisIsOurSpecialPasswordForBehindTheScenesLogin";
if (MobileNumberFoundInHeader())
{
string username = GetMobileNumberFromHeaders();
// Authenticate the user behind the scenes
System.Web.Security.FormsAuthentication.SetAuthCookie(username, false);
System.Web.Security.FormsAuthentication.Authenticate(username, specialpassword);
}
else
{
throw new Exception ("Mobile Number Missing");
}
그런 다음 멤버십 프로보더의 ValidateUser 함수에서 다음과 같은 점검을 수행해야합니다.
public override bool ValidateUser(string username, string password)
{
const string specialpassword = "ThisIsOurSpecialPasswordForBehindTheScenesLogin";
bool ValidationSuccess = false;
// If the password being passed in is the right secret key (same
// for all users), then we will say that the password matches the
// username, thus allowing the user to login
if (password == specialpassword)
{
ValidationSuccess = true;
}
if (DoStandardUsernamePasswordVerification() == true)
{
ValidationSuccess = true;
}
return ValidationSuccess;
}
요구 사항 #2에 관해서는 약간 혼란 스러워요. 운영자는 정확히 무엇입니까? 웹 브라우저를 사용하여 웹 사이트를 탐색하는 휴대 전화를 처리하고 있다고 생각했습니다. 운영자는 어디에 맞습니까? 위에서 제안한 솔루션이 도움이되지 않으면 연산자에 대한 자세한 내용이있는 응답을 게시하십시오.
팀