Loginform brugerdata gemmes ikke ved redirect.
Hej Eksperter.Jeg har et problem med at gemme oplysninger om en bruger som logger ind på min website.
Jeg benytter metoden herunder når en bruger indtaster sit brugernavn og password.
protected void btnLogin_Click(object sender, EventArgs e)
{
if (txtUsername.Text.Trim() != "" & txtPassword.Text.Trim() != "")
{
try
{
MessageBoardObjects.User myUser = MessageBoardObjects.User.Validate(txtUsername.Text, txtPassword.Text);
FormBase objPage;
objPage = ((FormBase)(this.Page));
objPage.CurrentUser = myUser;
Response.Redirect("Default.aspx", false);
}
catch (Exception Ex)
{
lblError.Text = Ex.Message;
}
}
}
Jeg har altså en klasse "Formbase" som alle mine webforms arver fra. I denne klasse har jeg også et user-objekt som skal gemme oplysninger om den der logger på. Redirect sørger for at sende brugeren videre til en anden side som starter som herunder:
protected void Page_Load(object sender, EventArgs e)
{
if (this.IsLoggedIn == false)
{
Response.Redirect("LoginFault.aspx");
}
.......
Siden tjekker lige om brugeren er logget ind. Det gør den ved at kalde bool property'en IsLoggedIn fra Formbase som denne webform også arver fra.
Problemet er at IsLoggedIn altid er false?? Når jeg bruger debuggeren så kan jeg se at CurrentUser i Formbase indeholder data lige indtil at redirect er kaldt. Burde Formbase ikke kunne huske værdierne?
Her følger noget kode fra Formbase:
public class FormBase : System.Web.UI.Page
{
private MessageBoardObjects.User currentUser;
public MessageBoardObjects.User CurrentUser
{
get
{return currentUser;}
set
{
currentUser = value;
Session.Add("userid", value.MUserID.ToString());
}
}
public bool IsLoggedIn
{
get
{
return !(currentUser == null);
}
}
Her er filstrukturen:
\App_Code
Formbase.cs
\Default.aspx
\Login.aspx