Как перехватить запрос аутентификации в веб-форме ASP.net - PullRequest
3 голосов
/ 30 ноября 2010

У меня есть пользователь, который теряет свои данные из-за того, что он слишком долго сидит на странице, а затем его просят войти в систему. Я хочу сделать следующее:

1) Вместо того, чтобы перенаправлять его на страницу входана странице, я хочу отменить текущий запрос и дать пользователю всплывающее диалоговое окно для входа в систему.

2) После успешного входа в систему я хочу, чтобы пользователь был отправлен обратно в свою форму со всеми данныминеповрежденными.(Еще лучше, если запрос может пройти без отправки их обратно в эту форму, но это необязательно).

Как я могу перехватить эти запросы на аутентификацию и предоставить пользователю всплывающее имя для входа?

Я использую проверку подлинности на основе форм ASP.net.

Ответы [ 2 ]

2 голосов
/ 30 ноября 2010

Вы можете перехватить это событие в Application_AuthenticateRequest в Global.asax

Но вам нужно быть более конкретным, используете ли вы проверку подлинности на основе форм ASP.NET?

Добавлено:

Попробуйте и ответьте мне

В Global.asax

void Application_AuthenticateRequest(object sender, EventArgs e)
{

    if (HttpContext.Current.User == null)
    {
        FormsAuthenticationTicket ticket = new
                        FormsAuthenticationTicket(1, "Anonymous", DateTime.Now, DateTime.Now.AddMinutes(30), false, "Anonymous");

        string encryptedTicket = FormsAuthentication.Encrypt(ticket);

        HttpCookie cookie =
           new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);

        Response.Cookies.Add(cookie);

        FormsIdentity id = new FormsIdentity(ticket);

        System.Security.Principal.GenericPrincipal principal = new System.Security.Principal.GenericPrincipal(id, ticket.UserData.Split(new char[] { '|' }));

        Context.User = principal;
    }

}

В веб-форме

string cookieName = FormsAuthentication.FormsCookieName;

    HttpCookie authCookie = Context.Request.Cookies[cookieName];

    FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);

    if (authTicket.UserData == "Anonymous")
    {

        //Throw the login popup

    }
    else
    {

        //Some Code

    }
0 голосов
/ 30 ноября 2010

Вы используете главную страницу? Вы можете перенаправить туда, когда требуется вход в систему, а не отдельную страницу входа. В коде входа на главной странице вы затем решили, следует ли перенаправить на правильную, отдельную страницу входа или сделать элемент входа в систему видимым как всплывающее окно.

...