Я создаю сайт, на котором мне нужно поддерживать сеанс входа в систему User. Существуют разные страницы, поэтому необходимо поддерживать сеанс для каждой страницы. Я передаю значение в моей переменной сеанса при нажатии кнопки ввода на домашней странице. Код работает отлично в первый раз, но когда пользователь перенаправляет с другой страницы на домашнюю страницу, сеанс получает значение null. Я смущен, где делать сеанс, чтобы сохранить ценность для всех страниц.?ASP.NET, сохранение сеанса на pageload и postback
Вот мой код:
protected void Page_Load(object sender, EventArgs e)
{
//Session["UserName"] = null;
//Session["UserRoles"] = null;
if (!Page.IsPostBack) //if page is not postback then here
{
Session["UserName"] = null;
Session["UserRoles"] = null;
if (Session["UserRoles"] != null && (String)Session["UserRoles"] == "Admin")
{
divLoggedInMember.Visible = true;
lblLoggedinUser.Text = "Welcome" + " " + Session["UserName"] + "(Admin)";
}
else if (Session["UserRoles"] != null && (String)Session["UserRoles"] == "member")
{
divLoggedInMember.Visible = true;
lblLoggedinUser.Text = "Welcome" + " " + Session["UserName"];
}
}
else //if page postback then here
{
if (Session["UserRoles"] != null)
{
if ((String)Session["UserRoles"]=="Admin")
{
divLoggedInMember.Visible = true;
lblLoggedinUser.Text = "Welcome" + " " + Session["UserName"] + "(Admin)";
}
else
{
divLoggedInMember.Visible = true;
lblLoggedinUser.Text = "Welcome" + " " + Session["UserName"];
}
}
}
}
protected void btnenter_Click(object sender, ImageClickEventArgs e)
{
try
{
Session["UserName"] = null;
Session["UserRoles"] = null;
DataTable dt = new DataTable();
dt=getUserInfo(txtUserId.Text.Trim(),txtPassword.Text.Trim());
if (dt.Rows.Count == 0)
{
Response.Write("<script> alert('User Not Exist')</script>");
}
else
{
strUserName = dt.Rows[0]["User_Name"].ToString();
// strUserName = txtUserId.Text.Trim();
struserRoles = dt.Rows[0]["USER_ROLE"].ToString();
Session["UserName"] = (String)strUserName;
Session["UserRoles"] = (String)struserRoles;
if (Session["UserRoles"] != null && (String)Session["UserRoles"]=="Admin")
{
divLoggedInMember.Visible = true;
lblLoggedinUser.Text = "Welcome" + " " + Session["UserName"] + "(Admin)";
}
else if (Session["UserRoles"] != null && (String)Session["UserRoles"] == "Member")
{
divLoggedInMember.Visible = true;
lblLoggedinUser.Text = "Welcome" + " " + Session["UserName"];
}
Response.Redirect("MemberPage.aspx", false);
}
}
catch (Exception ex)
{
ex.Message.ToString();
}
}
Основываясь на вашем вопросе, я не совсем уверен, что вы понимаете, как работает поведение сеанса в ASP.NET. Вам не нужно ничего делать, чтобы перенести сеанс между страницами на одном сайте. –
Hi David, Спасибо за ваш ответ, Я являюсь начальником в ASP.Net, поэтому я прошу вас быть легким для меня, но я знаю, что сеансы поддерживаются в ASP.Net, на самом деле мне нужно знать, где именно следует Я помещаю чек на свои переменные сеанса, чтобы различать администраторов или пользователей-членов, а также для поддержания этого значения сеанса? – user2126933
Не проблема! На самом деле, я думаю, что ответ от @Hussein Roncevic очень хорошо взят - ASP.NET имеет возможности для управления большой частью этого вида домашнего хозяйства для вас, и это сделает ваш код намного проще в обслуживании. –