会议结束的ASP.net MVC结束、会议、ASP、net

由网友(这条河叫时光)分享简介:我把用户的数据会话,然后将它传递到可视数据查看页面上。现在,当我的用户走开从他的电脑一段时间,在会话结束和数据,他进入丢失。(这是确定)的问题是,当他返回,他将刷新屏幕,我的网页仍然显示,但所有数据不见了。因此,I am placing user data in the session then passing it...

我把用户的数据会话,然后将它传递到可视数据查看页面上。现在,当我的用户走开从他的电脑一段时间,在会话结束和数据,他进入丢失。(这是确定)的问题是,当他返回,他将刷新屏幕,我的网页仍然显示,但所有数据不见了。因此,

I am placing user data in the session then passing it to viewdata to view on a page. Now when my user walks away from his computer for a while, the session ends and the data he entered is lost.(that is ok) The problem is that when he returns he refreshes the screen my page is still showing but all the data is gone. So,

我如何将用户重定向到当会话过期登录屏幕(所以他不看到一个空白页),或者我想重定向他到一个网页,指出您已被注销因不活动。

How can I redirect the user to a login screen when the session expires (so he doesnt see a blank page) or I would like to redirect him to a page that states "You have been logged out due to inactivity".

感谢

推荐答案

我用一些JavaScript在我的母版将用户重定向(后提示更新会话)的注销动作。它使用一个AJAX请求返回到应用程序的主页上,当用户单击该对话框中的按钮,延长会话刷新服务器端的会话窗口。凭借jQuery和jQuery用户界面的对话框。

I use some Javascript in my MasterPage to redirect the user (after a prompt to renew the session) to the logout action. It uses an AJAX request back to the Home page of the app to refresh the server side session window when the user clicks the button in the dialog to extend the session. Relies on jQuery and jQuery UI for the dialog.

 <% if (this.Request.IsAuthenticated)
    {
        int sessionDialogWait = 2 * 60 * 1000 - 60 * 500; // ms = 1.5 minutes
        int sessionTimeout = 28 * 60 * 1000; // ms = 28 minutes
        if (ViewData["sessionTimeout"] != null)
        {
            sessionTimeout = ((int)ViewData["sessionTimeout"] * 60 - 120) * 1000;
        }
%>  
<script type="text/javascript">
    var logoutTimer = null;
    var sessionTimer = null;
    var sessionTimeout = Number('<%= sessionTimeout %>');
    var sessionDialogWait = Number('<%= sessionDialogWait %>');

    $(document).ready( function() {
        $('#sessionEndDialog').dialog( {
            autoOpen: false,
            bgiframe: true,
            modal: true,
            buttons: {
                OK: function() {
                    $(this).dialog('close');
                    $.get( '<%= Url.Action( "About", "Home" ) %>', scheduleSessionPrompt, 'html' );
                },
                Logout: logoutOnSessionExpires
            }
        }).ajaxStart( function() { scheduleSessionPrompt(); } );
        scheduleSessionPrompt();
    });

    function scheduleSessionPrompt()
    {
        if (logoutTimer) clearTimeout(logoutTimer);
        if (sessionTimer) clearTimeout(sessionTimer);

        sessionTimer = setTimeout( sessionExpiring, sessionTimeout  );
    }

    function sessionExpiring()
    {
         logoutTimer = setTimeout( logoutOnSessionExpires, sessionDialogWait );
         $('#sessionEndDialog').dialog('open');
    }

    function logoutOnSessionExpires()
    {
        window.location.href = '<%= Url.Action( "Logout", "Account" ) %>';
    }       

    </script>
<% } %>

<div id="sessionEndDialog" title="Session Expiring" style="display: none;">
    <p>Your session is about to expire.  Click OK to renew your session or Logout to logout of the application.</p>
</div>
阅读全文

相关推荐

最新文章