Scenario: Jag måste erkänna att jag inte hänger med på frågan här. På din loginsida har du väl förmodligen Använder du ASp.NEt 2.0:s inbyggda kontroller Login och LoginStatus? Aha! Klockrent! Nja, inte riktigt. Gör du så där så kan du råka i den fällan som krånglade till det riktigt ordentligt för mig. Ok, tack för tipset.Login kommer tillbaka till samma sida...
En användare loggar in jobbar lite och loggar ut.
Om användaren seda loggar in igen utan att ha stängt webbläsaren och öppnat en ny så kommer han till samma sida som han var på sist och inte till den sida som definerats som start sida.
Är det någon som vet hur jag ska göra för att de inte ska komma till startsidan?
Jag använder asp.net 2.0s inbyggda login funktion.Sv: Login kommer tillbaka till samma sida...
Response.Redirect(FormsAuthentication.GetRedirectUrl(txtUserName.Text, false));
Den raden gör att man återgår till den sida som man försökte nå men enligt web.config måste vara inloggad för. Du får i stället göra en response.redirect till någon annan sida i stället när inloggningen är utförd i så fall.
Sv:Login kommer tillbaka till samma sida...
Du kan få detta beteende om du har satt LogoutAction på LoginStatus till Refresh, vilket gör att om användaren klickar på logout så tas användarens authentication ticket bort och sedan görs en refresh på den sidan som användaren år på som i sin tur gör att man hamnar på inloggningssidan. Observera att detta är en redirect (syns delvis i url:en) som gör att när någon loggar in så kommer man tillbaks till den sidan man var på innan man loggade ut.
Det finns två sätt att komma ur det här:
1. Sätt LogoutAction till Redirect och sätt LogoutPageUrl till t.ex. default.aspx.
2. Om du använder Login-kontrollen på din inloggningssida så kan du där sätta DestinationPageUrl (vilket är den sidan som användaren skall hamna på om inloggningen lyckades) till t.ex. default.aspx.
Det tog mig två timmars irriterat knappande innan jag fattade vad det handlade om. Suck.
/AndreasSv: Login kommer tillbaka till samma sida...
Koden blir så här:
<code>
<asp:LoginStatus ID="ls_logout" LogoutAction="Redirect" LogoutPageUrl="~/login20.aspx" runat="server" />
</code>Sv:Login kommer tillbaka till samma sida...
Om du inte har satt DestinationPageUrl på din Login-kontroll på din inloggningssida och/eller gör något annat i t.ex. LoggedIn så får du beteendet att när användaren loggat in så stannar han kvar på inloggningssidan.
Problemet är då att användaren tror att han inte lyckats logga in, men det har han. Dock så syns det ingenstans om du inte har någon meny eller liknande på sidan som skriver ut användarnamn. Har du heller ingen meny eller liknande med länkar till huvudsidan så kommer användaren inte från inloggningssidan utan att själva skriva i URL:en.
Det är nog bättre att göra
<asp:LoginStatus ID="ls_logout" LogoutAction="Redirect" LogoutPageUrl="~/default.aspx" runat="server" />
så att du skickar användaren till default.aspx vid inloggning. ASP.NET:s form authentication kommer då att känna av att användaren inte har access till den sidan (om du inte tillåter anonym access) och kommer då att skicka användaren till din inloggningssida. När användaren sedan har loggat in så slussas han vidare till default.aspx automatiskt.
Om du istället skrev som du gjorde i förra inlägget så sker liknande scenario, men användaren slussas till efter lyckad inloggning till login20.aspx vilket kan vara förvirrande eftersom han då kan tro att inloggningen har misslyckats.
Oj, det blev långt. Lurigt att förklara tycker jag. Hoppas att någon förstod någonting :-).
/Andreas
Sv: Login kommer tillbaka till samma sida...
Det var inga problem att förstå vad du menade.
Tack för all hjälp!