【问题标题】:MVC : How to clear session and close the current browser tab on click of logout link?MVC:如何在单击注销链接时清除会话并关闭当前浏览器选项卡?
【发布时间】:2015-08-12 03:52:07
【问题描述】:

我正在尝试清除会话并在单击注销链接时关闭浏览器选项卡。请帮我做这件事。

提前致谢

【问题讨论】:

  • 关闭浏览器请参考this answer。清算会话请参考this answer
  • @Stephen Muecke 我试过了.. 但它没有关闭

标签: asp.net-mvc asp.net-mvc-4


【解决方案1】:

您正在尝试实现两件不同的事情,其中​​一件是服务器端问题,另一件是客户端问题。

您可以尝试拆分这些问题,例如:

答:使用一些带有标签关闭 javascript 的 Post/Redirect/Get

  1. 发布到注销控制器方法
  2. 重定向到 /LogoutSuccess
  3. 在 LogoutSuccess 视图中放置一些关闭浏览器选项卡的 JavaScript。

B:更客户端的方法

  1. 执行(在您的 javascript 中)http GET 到 /Logout
  2. 在 200 OK 响应后,执行一些关闭浏览器选项卡的 javascript。

【讨论】:

    【解决方案2】:
    Session.Abandon();
    or
    Session.Clean();
    or
    Session[".."]=null;
    

    关闭可以使用js的窗口

    windows.close();
    

    在某些浏览器中,它会弹出一个确认

    【讨论】:

      【解决方案3】:

      您可以向清除会话变量的操作方法发送 ajax 请求,并在回调中关闭窗口。

      <a id=logoutLink">Logout</a>
      
      <script type="text/javascript">
      
      $(function(){
      
        $("#logoutLink").click(function(e){
         e.preventDefault();
         $.post("@Url.Action("Logout","User")",function(res){
            if(res.status==="done")
            {
               //close the window now.
               window.close();
            }
         });
        });
      
      });
      </script>
      

      现在在您的 UserController 中,添加 Logout 操作方法

      public class UserController : Controller
      {
         [HttpPost]
         public ActionResult Logout()
         {
            Session.Abandon();
            return Json(new { status="done"});
         }
      }
      

      参考: MVC for clossing browser tab when logout

      【讨论】:

      • 我想关闭浏览器选项卡不重定向
      【解决方案4】:

      此代码来自MSDN。我在 jQuery 调用中添加了 async : false ,因为这是确保调用刷新服务器端会话然后关闭窗口的关键。

      <script type="text/javascript"> 
            
      	$(document).ready(function () { 
      		window.addEventListener('beforeunload',recordeCloseTime); 
      	}); 
          
      	function recordeCloseTime() { 
       
          	$.ajax({ 
          		type: "POST", 
                  async: false,
              	url: "ServiceToClearSession.asmx/RecordCloseTime", 
      		});      
      	} 
      
      </script> 

      【讨论】:

        猜你喜欢
        • 2017-03-04
        • 1970-01-01
        • 1970-01-01
        • 2019-05-13
        • 2014-07-01
        • 2017-01-17
        • 2013-07-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多