Försöker använda login kontrollen i mitt projekt, men lyckas mindre bra. Var kommer du när du försöker logga på? Som jag uppfatade skulle LoginControl skicka vidare användaren efter en lyckad inloggning men det fick jag ej att fungera.Problem med login kontrollen och CustomMemberShipProvider
Använder en CustomMembershipProvder (CustomerLoginProvider ) denna ärver från MembershiopProvider, där jag endast använder validateUser. I denna kollla jag om användaren finns i db och sedan försöker jag sätta en cookie men en viss roll.
Koden ger inga fel vid kompilering med då jag loggar på med en användare som finns i db skickas ej vidare till "DestinationPageUrl="CustomerPages/default.aspx">" - enligt kontrollen.
User.Identity.IsAuthenticated sätts inte heller till true <-- är det därför den ej skicka vidare användaren?
Vad gör jag för fel?
ursäkta stavningen
har följande kod:
customerLogin.aspx-------------------------------------------------------------
<asp:Login ID="loginCustomer" runat="server"
MembershipProvider="CustomerLoginProvider" DestinationPageUrl="CustomerPages/default.aspx">
-----------------------------------------------------------------------
customerLogin.aspx.cs-----------------------------------------------------
CustomerLoginProvider p = (CustomerLoginProvider)Membership.Provider;
if (p.ValidateUser(Username.Text, Password.Text))
{
}
---------------------------------------------------------------------
web.config-------------------------------------------------------------
<authentication mode="Forms" >
<forms name="..CustomerCookie"
loginUrl="~/customerLogin.aspx"
protection="All"
timeout="30" />
</authentication>
<membership defaultProvider="CustomerLoginProvider" userIsOnlineTimeWindow="30">
<providers>
<add name="CustomerLoginProvider" type="CustomerLoginProvider" connectionString="SQLConnectionString" />
</providers>
</membership>
-----------------------------------------------------------------------
CustomerLoginProvider : MembershipProvider
public override bool ValidateUser(string username, string password)
{
Först validera användaren mot db.....
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(userName, false, 30);
// Encrypt the cookie using the machine key for secure transport
string hash = FormsAuthentication.Encrypt(ticket);
System.Web.HttpCookie cookie = new System.Web.HttpCookie("..CustomerCookie", hash); // Hashed ticket
// Add the cookie to the list for outgoing response
System.Web.HttpContext.Current.Response.Cookies.Add(cookie);
System.Web.HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(System.Web.HttpContext.Current.User.Identity, roles);
}
Sv: Problem med login kontrollen och CustomMemberShipProvider
Vad gör du inom din if-sats med p.ValdDateUser() ?Sv:Problem med login kontrollen och CustomMemberShipProvider
customerLogin.aspx
if (p.ValidateUser(loginCustomer.UserName, loginCustomer.Password))
{
//Här skickar jag själv vidare användaren....
Response.Redirect("CustomerPages/default.aspx");
}
Hade även missat denna. För att läsa in rollen i till HttpContext.Current.User
Global.asax
protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
//Fires upon attempting to authenticate the use
if (!(HttpContext.Current.User == null))
{
if (HttpContext.Current.User.Identity.IsAuthenticated)
{
if (HttpContext.Current.User.Identity.GetType() == typeof(FormsIdentity))
{
FormsIdentity fi = (FormsIdentity)HttpContext.Current.User.Identity;
FormsAuthenticationTicket fat = fi.Ticket;
String[] astrRoles = fat.UserData.Split('|');
HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(fi, astrRoles);
}
}
}
}