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;

    }

Надеюсь, это поможет вам начать.

Просто создайте новый тестовый сайт и выберите шаблон по умолчанию с контроллером аккаунта. Это должно дать вам всю необходимую информацию.

Другие вопросы по тегам