Я пытаюсь заставить Провайдера членства работать.
До сих пор я:
<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");
}
}