ASP.NET Mvc 4中每个用户仅限一个会话 [英] Limit Only One Session Per User In ASP.NET Mvc 4
问题描述
我正在开发一个Web应用程序,我希望确保该网站每个用户一次只能登录一次。
用户登录时我正在更新表列islogged = 1当注销时我正在更新islogged = 0
但问题是用户会话超时或用户关闭浏览器我是无法捕获此事件。我正在使用sqlserver状态来存储会话,因此在此状态下不会触发Session_End事件。
它仅适用于InProc状态。并且在浏览器关闭事件中我尝试过onunload事件。但是这个事件也会在关闭标签时触发。无法区分标签关闭和浏览器关闭。
我只想要一个并发用户登录。有没有其他方法来实现这一点。
i使用此代码捕获浏览器关闭事件。
< body class =fixed -toponclick =clicked = true; onunload =CheckBrowser()>
< script type = text / javascript>
var clicked = false ;
// var xmlHttp
// var browser = navigator.appName;
function CheckBrowser(){
调试器
// var browserClose = isUserClickedCloseButton();
if (点击== false ){
$ .ajax({
url: @ Url .Content(〜/ Account / LogOff ),
type :' 发布',
成功:功能ion (数据){
},
错误: function (){alert( Logut上的错误......); }
});
}
.ajax({
url: @ Url.Content(〜/ Account / LogOff ),
类型:' 发布',
成功:功能(数据){
},
错误: function (){alert( Logut上的错误...);}
});
}
请查看以下具有类似Q& A的链接。
http://stackoverflow.com/questions/17515716/only -one-concurrent-login-per-user-in-asp-net [ ^ ]
Asp.net中每个UserID只有一个并发登录 [ ^ ]
< script type =text / javascript>
var clicked = false;
函数CheckBrowser()
{
debugger;
if(clicked == false)
{
//浏览器关闭
}
其他
{
//重定向
clicked = false;
}
}
函数bodyUnload()
{
debugger;
if(clicked == false)//浏览器关闭
{
debugger;
var request = GetRequest();
request.open(GET,Logout,true);
request.send();
}
}
函数GetRequest()
{
调试器;
var request = null;
if(window.XMLHttpRequest)
{
//包括IE7,FF,Opera和Safari浏览器
request = new XMLHttpRequest();
}
其他
{
//旧浏览器如IE 6.x和IE 5.x
request = new ActiveXObject('MSXML2.XMLHTTP.3.0' );
}
返回请求;
}
并将其添加到正文标签中
onunload的= bodyUnload();的onclick =点击=真;
I am working on one web application in which i want to make sure that website allow only one login per user at a time.
when user login i am updating table column islogged=1 when logoff i am updating islogged =0
but the problem is when user session timeout or if user closing browser i am unable to capture this events.i am using sqlserver state to store sessions so Session_End event is not fired in this state .
it only works in InProc State. and also in browser close event i have tried onunload event. but this event is fired on tab closed also. not able to differentiate tab close and browser close.
i want only one concurrent user login. is there any other way to achieve this.
i am using this code to capture browser close event.
<body class="fixed-top" onclick="clicked=true;" onunload="CheckBrowser()">
<script type="text/javascript">
var clicked = false;
// var xmlHttp
// var browser = navigator.appName;
function CheckBrowser() {
debugger
// var browserClose = isUserClickedCloseButton();
if (clicked == false) {
$.ajax({
url: "@Url.Content("~/Account/LogOff")",
type: 'Post',
success: function (data) {
},
error: function () { alert("Error On Logut..."); }
});
}
.ajax({ url: "@Url.Content("~/Account/LogOff")", type: 'Post', success: function (data) { }, error: function () { alert("Error On Logut..."); } }); }
Please check the below links which has similar Q&A.
http://stackoverflow.com/questions/17515716/only-one-concurrent-login-per-user-in-asp-net[^]
Only one concurrent login per UserID in Asp.net[^]
<script type="text/javascript"> var clicked = false; function CheckBrowser() { debugger; if (clicked == false) { //Browser closed } else { //redirected clicked = false; } } function bodyUnload() { debugger; if (clicked == false)//browser is closed { debugger; var request = GetRequest(); request.open("GET", "Logout", true); request.send(); } } function GetRequest() { debugger; var request = null; if (window.XMLHttpRequest) { //incase of IE7,FF, Opera and Safari browser request = new XMLHttpRequest(); } else { //for old browser like IE 6.x and IE 5.x request = new ActiveXObject('MSXML2.XMLHTTP.3.0'); } return request; }
and add this in body tag
onunload="bodyUnload();" Onclick="clicked=true;
这篇关于ASP.NET Mvc 4中每个用户仅限一个会话的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!