Я пытаюсь заставить провайдера членства работать.
Пока у меня есть:
<asp:Login ID="Login1" runat="server" OnAuthenticate="Login1_Authenticate">
</asp:Login>
звонить:
protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
{
if(Membership.ValidateUser(Login1.UserName, Login1.Password))
{
Response.Redirect("/admin/default.aspx");
// Set the user as logged in?
}
}
Если я введу правильный логин / пароль, функция ValidateUser вернет true. Итак, мой вопрос: как настроить пользователя как вошедшего в систему?
Я проверяю это на своих страницах:
protected void Page_Load(object sender, EventArgs e)
{
if ( Membership.GetUser()==null)
{
Response.Redirect("/admin/login.aspx");
}
// else "you are logged in, congratulations"
}
Я бы использовал функции по умолчанию, но они просто не работают, и поиск в Google заставил меня подумать, что я сэкономлю время, фактически переписав все это сам.
Всё поможет!
РЕДАКТИРОВАТЬ : Что касается принятого ответа, то он правильный для «как установить пользователя, вошедшего в систему» и работает нормально. Это не решило мою конкретную проблему, но только часть. Подумайте, если вы посмотрите в комментариях вы найдете интересные указатели.
РЕДАКТИРОВАТЬ 2 и решение: Хорошо, я наконец-то решил это благодаря всем комментариям. Вот что я сделал, это проще, чем я ожидал:
Страница, которая проверяет состояние входа в систему:
protected void Page_Load(object sender, EventArgs e)
{
if ( !Request.IsAuthenticated)
{
Response.Redirect("/admin/login.aspx");
}
Выйти:
protected void LoginStatus1_Logout(object sender, LoginCancelEventArgs e)
{
FormsAuthentication.SignOut();
Response.Redirect("/admin/login.aspx");
}
}
web.config:
<authentication mode="Forms" />
Логин:
protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
{
if(Membership.ValidateUser(Login1.UserName, Login1.Password))
{
FormsAuthentication.SetAuthCookie(Login1.UserName, true);
Response.Redirect("/admin/default.aspx");
}
}