MVC:如何清除会话并单击注销链接关闭当前浏览器选项卡?

时间:2015-08-12 03:52:08

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

我正在尝试清除会话并关闭注销链接上的浏览器选项卡。请帮我这样做。

提前致谢

4 个答案:

答案 0 :(得分:0)

您可以向清除会话变量的操作方法发送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

答案 1 :(得分:0)

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

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

答:使用标签关闭javascript

的一些Post/Redirect/Get
  1. 发布到退出控制器方法
  2. 重定向到/ LogoutSuccess
  3. 在LogoutSuccess视图中添加一些关闭正文加载浏览器选项卡的javascript。
  4. B:更客户端的方法

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

答案 2 :(得分:0)

Session.Abandon();
or
Session.Clean();
or
Session[".."]=null;

关闭窗口,你可以使用js

windows.close();

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

答案 3 :(得分:0)

此代码来自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>