Question

I'm currently rebuilding one of my ASP.NET [Webform] Sites with JQuery Mobile + MVC (Razor Viewengine).

Now I'm having problem porting the Membershipprovider to the new technique, because I can't use Webcontrols (LoginControl) anymore. The Membership-provider itself works great, but I can't seem to 'initialize' it by 'logging in' without the common Web-LoginControl.

Are there any ways to reproduce this with HTML-Controls? (I'm new to MVC and jquery mobile, Google + Search couldn't help me)

Thanks in advance

Was it helpful?

Solution

You can do everything manually. This code will create the auth ticket 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("~/");

Then this event in your global.asax.cs will load it back in.

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;

    }

Hopefully that will get you started.

OTHER TIPS

Just create a new test site, and select the default template with account controller. This should give you all the information you need.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top