ASP.NET MVC3 + JQuery Mobile: пользовательский пользовательский поставщик (без входа в систему)
В настоящее время я перестраиваю один из моих сайтов ASP.NET [Webform] с помощью JQuery Mobile + MVC (Razor Viewengine).
Теперь у меня проблемы с переносом Membershipprovider на новую технику, потому что я больше не могу использовать Webcontrols (LoginControl). Сам член-провайдер работает отлично, но я не могу "инициализировать" его, "войдя в систему" без обычного Web-LoginControl.
Есть ли способы воспроизвести это с помощью HTML-элементов управления? (Я новичок в MVC и jquery mobile, Google + Search не может мне помочь)
заранее спасибо
2 ответа
Вы можете сделать все вручную. Этот код создаст файл cookie для аутентификационного билета.
FormsAuthenticationTicket authTicket =
new FormsAuthenticationTicket(1,
model.UserName,
DateTime.Now,
DateTime.Now + SecurityWebConfig.FormAuthTicketTimeout,
false,
userData);
string encTicket = FormsAuthentication.Encrypt(authTicket);
HttpCookie faCookie =
new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);
faCookie.Path = FormsAuthentication.FormsCookiePath;
Response.Cookies.Add(faCookie);
Response.Redirect("~/");
Затем это событие в вашем global.asax.cs загрузит его обратно.
protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
// Get the authentication cookie
string cookieName = FormsAuthentication.FormsCookieName;
HttpCookie authCookie = Context.Request.Cookies[cookieName];
// If the cookie can't be found, don't issue the ticket
if (authCookie == null) return;
// Get the authentication ticket and rebuild the principal
// & identity
FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);
CustomUser currentUser = new CustomUser(authTicket);
GenericPrincipal userPrincipal =
new GenericPrincipal(currentUser, new string[] { "User" });
Context.User = userPrincipal;
}
Надеюсь, это поможет вам начать.
Просто создайте новый тестовый сайт и выберите шаблон по умолчанию с контроллером аккаунта. Это должно дать вам всю необходимую информацию.