Я думаю, что это может сработать. Мы делаем № 3 на одном из наших сайтов. Вот кусок кода, который мы используем, чтобы позаботиться о нем. Чтобы использовать это, создайте страницу входа (transparentlogin.aspx или что-то подобное), убедитесь, что файл web.config разрешает анонимный доступ к этой странице, и поместите подобный код в функцию page_load для страницы transparentlogin.aspx:
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 в MembershipProvider, убедитесь, что вы делаете такую проверку:
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, я немного растерялся. Что именно является оператором? Я думал, что мы имеем дело с мобильным телефоном, используя веб-браузер для просмотра веб-сайта. Где оператор вписывается в это? Если решение, которое я предлагаю выше, не помогает, пожалуйста, отправьте ответ с более подробной информацией об Операторе.
Тим