私は他の4人とグループプロジェクトを行っています。C# が埋め込まれた MVC4 の ASP.NET でジョブ キオスクを設計しています。
ユーザーが 10 分間アイドル状態の場合、システムがユーザーをログアウトするように取り組んでいます。システムがユーザーをログアウトする方法のコーディングを開始する方法について、助けが必要です。
私は他の4人とグループプロジェクトを行っています。C# が埋め込まれた MVC4 の ASP.NET でジョブ キオスクを設計しています。
ユーザーが 10 分間アイドル状態の場合、システムがユーザーをログアウトするように取り組んでいます。システムがユーザーをログアウトする方法のコーディングを開始する方法について、助けが必要です。
FormsAuthentication を使用している場合の方法は次のとおりです。
コントローラーのアクション:
public ActionResult CheckLogin()
{
if (Request.Cookies["CookieName"] == null) return Json(0, JsonRequestBehavior.AllowGet);
var cookie = Request.Cookies["CookieName"].Value;
var ticket = FormsAuthentication.Decrypt(cookie);
var secondsRemaining = Math.Round((ticket.Expiration - DateTime.Now).TotalSeconds, 0);
return Json(secondsRemaining, JsonRequestBehavior.AllowGet);
}
各ページまたはレイアウト ページでの Jquery:
<script>
$(function () {
setTimeout(doStuff, 1000);
});
function doStuff() {
$.ajax("/CheckLogin").done(function (data) {
if (data <= 60) {
startLogout(data);
} else {
setTimeout(doStuff, 1000);
}
});
}
function startLogout(seconds) {
var countdown = setInterval(function () {
//Show something here
if (count == 0) {
clearInterval(countdown);
//Do something here
}
seconds--;
}, 1000);
}
</script>
それらを自動的にログアウトさせる必要がある場合は、web.config セッション タイムアウトを設定するという Linus Caldwell の提案から始めてください。彼の例では 30 分を示しているので、10 に変更するだけです。ただし、ユーザーは、実際にサーバー リソースを要求しようとするまで、ログアウトしたことを知りません。それを自動的に行うには、いくつかの方法があります。どちらの方法でも、タイムアウト期間が経過した後にページが自動的に更新されます。1 つの方法は、javascript タイマーを使用することです。もう 1 つは、各ページに更新ヘッダーを追加することです。
<script type="text/javascript">
var seconds = 60 * 11;// set timer for 11 minutes (1 minutes after session expires)
countdown();
function countdown(){
seconds--;
if (seconds <= 0){
window.location.reload(); // force a refresh.
}else{
setTimeout('countdown()', 1000);
}
}
</script>
もう 1 つの方法は、global.asax にあります。
protected void Application_BeginRequest()
{
Response.Headers.Add("Refresh", Convert.ToString(Session.Timeout * 11));
}