Не уверен, что это лучший подход, так как я все еще довольно новичок в asp.net, но способ, которым я делаю это при входе в систему, - установить значение сеанса, которое я могу проверить на последующих страницах - таким образом, если файл cookie отсутствует, я не смогу вернуть значение, чтобы перенести его на страницу входа.
Итак, сразу после входа в систему (в событии _LoggedIn) я делаю:
// write ClientID to the session
Session.Add("ClientID", lClientID);
затем при загрузке каждой страницы за логином я делаю:
if (User.Identity.IsAuthenticated == false || Convert.ToInt32(Session["ClientID"]) == 0)
{
Server.Transfer("Login.aspx");
}
Пока это работает довольно хорошо для меня.