Отображение сообщения пользователю по окончании сеанса проверки подлинности форм - PullRequest
1 голос
/ 21 октября 2010

Это кажется простым, и я помню, как делал это пару лет назад.

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

Что-то типа "Вы слишком долго простаивали, поэтому вы должны войти в систему".

Это должно быть легко, я просто врезаюсь в стену здесь. Я думал о получении оригинального билета и прочтении срока годности, но я немного растерялся.

Есть идеи?

Brent

Ответы [ 4 ]

0 голосов
/ 25 октября 2010

Если вы перенаправлены на страницу входа по умолчанию, после попытки использовать страницу после истечения времени сеанса не задан ли параметр redirecturl для страницы, к которой вы пытались получить доступ.

Таким образом, вы могли бы сделать вывод, что, если это установлено, они были ранее на странице, а затем представить ваше сообщение о выходе из системы в связи с выходом на обед. И т. Д.

0 голосов
/ 21 октября 2010

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

MyPage.aspx.cs, при загрузке страницы вы можете проверить,

if(Session["user"]==null)
{
  Response.Redirect("Login.aspx?from=mypage");
}
else
{
  // Do the other stuff for the loged in user
} 

И В Login.aspx.cs, В коде, где вы проверяете свои данные для входа в систему из формы

string userName=txtUserName.Text; 
string password=txtPass.Text;
if(IsValidLogin(userName,password)
{
  string toUrl="defaul.aspx";
  if(Request.QueryString["from"]!=null)
  {
   string fromPage=Request.QueryString["from"];
    if(fromPage=="mypage")
    {
       toUrl="mypage.aspx";
    }
    else if(fromPage=="review")
    {
       toUrl="review.aspx";
    }
  }
  Response.Redirect(toUrl);
}
0 голосов
/ 22 октября 2010

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

if(!Context.User.Identity.IsAuthenticated)
{
    Response.Redirect("~/OtherPage.aspx", false);
}

Если вы создаете на своем веб-сайте базовую страницу, от которой наследуются все страницы, добавьте ее на страницу Page_Load.

.
0 голосов
/ 21 октября 2010

Попробуйте этот JavaScript для размера:

Убедитесь, что в коде есть свойство с именем LoginPageUrl.Отлично подходит для главных страниц.

Если вы хотите зарегистрировать сценарий из кода, вы можете даже извлечь тайм-аут сеанса из приложения и вставить его, чтобы у вас оставалось только одно место (web.config) дляобновите его.

Чтобы отобразить сообщение пользователю после перенаправления его на страницу входа в систему (.NET позаботится об истечении срока действия cookie), отправьте параметр строки запроса, который ищет страница входа и отображает сообщениеуказывает на то, что пользователь вышел из системы из-за неактивности.

<head>
...
</head>
<body onload="logoutOnExpire();" >
<script type="text/javascript">
        // ACTIVITIES TO RUN FOR THE PAGE
        function logoutOnExpire() {
            clearTimeout(logoutTimeout);
            logoutTimeout =
               setTimeout('location.href = '<%= LoginPageUrl %>';', 1200000);
               // 20 minutes
        }
</script>
<form id="form" runat="server">
...
</form>
</body>
</html>
...