У меня есть рабочая форма входа. Я просто пытался сделать простой тест, чтобы увидеть, работает ли он, и, кажется, он работает только при повторной публикации. Другими словами ...
Я ввожу свое имя пользователя / пароль и нажимаю кнопку входа, он отправляет сообщения назад, но не показывает, что я вошел в систему.
После повторного нажатия на кнопку, перезагрузки и т. Д. Он снова отправит сообщение с желаемым результатом.
// from my pageload
//System.Threading.Thread.Sleep(new TimeSpan(0, 0, 0, 10));
//didn't work
if (PageBase.Account.AuthenticatedUser != null) //if user is logged in...
formLogin.Attributes.Add("Style", "background-color:Green");
else
formLogin.Attributes.Add("Style", "background-color:Red");
// just changed the background color. 2nd postback it turns green.
Спасибо за вашу помощь и вклад.
РЕДАКТИРОВАТЬ: больше кода в соответствии с просьбой.
public class AccountManager {
public Website.User AuthenticatedUser {
get {
int id = Convert.ToInt32(( (object)HttpContext.Current.Session["user_id"] ??
(object)(HttpContext.Current.Request.Cookies["USER_ID"] ??
new HttpCookie("bugfixcookie") { Value = "0"}).Value));
var user = (from u in new MyWebsiteEntities().Users where u.ID == id select u).FirstOrDefault();
return user;
}
}
// create user,
public bool Login(string username, string password, bool remember) {
var result = (from u in new MyWebsiteEntities().Users
where username == u.Username && password == u.Password select u).FirstOrDefault();
if (result != null) {
if (remember) HttpContext.Current.Response.Cookies.Add(new HttpCookie("USER_ID", result.ID.ToString()));
HttpContext.Current.Session["user_id"] = result.ID.ToString();
return true;
} else return false;
}
public void Logout() {
HttpContext.Current.Response.Cookies.Remove("USER_ID");
HttpContext.Current.Session.Remove("user_id");
}
}
И ...
public class PageBase : System.Web.UI.Page
{
public static AccountManager Account { get { return new AccountManager(); } }
}
Front End
<form runat="server" id="formLogin">
<asp:TextBox runat="server" ID="textKey" style="display:none" />
<asp:CheckBox runat="server" ID="checkboxRemember" />
<div>
<span id="un">Username</span><br />
<asp:TextBox runat="server" ID="textUsername" />
</div>
<div>
<span id="pw">Password</span><br />
<asp:TextBox runat="server" ID="textPassword" TextMode="Password" />
</div>
<asp:Button runat="server" ID="buttonLogin" OnClick="buttonLogin_click" />
<asp:Button runat="server" ID="buttonRegister" OnClick="buttonRegister_click" />
</form>
Еще раз спасибо!