Como aviso o usuário que a sessão da web está prestes a passar?
-
20-09-2019 - |
Pergunta
Eu verifiquei para uma solução, mas não parecei ser direcionado ao ASP.NET MVC. Basicamente, estou procurando uma solução em que um usuário seja notificado um minuto antes que a sessão expire.
A solução ideal será a notificação do baixo que terá a opção de renovar a sessão.
Se o cronômetro da contagem regressiva expirar sem o usuário atualizando a página, preciso registrá -los.
Solução
Algo assim:
public class YourController : Controller {
public ActionResult TheAction() {
ViewData["SessionTimeout"] = Request.Session.Timout;
ViewData["SessionWillExpireOn"] = DateTime.Now.AddMinutes(Request.Session.Timeout);
return View(info);
}
}
e isto:
<span>Your session will expire: <%= ViewData["SessionWillExpireOn"].ToString() %></span>
<span id="countDown" style="display:none></span>
<script type="text/javascript">
var sessionTimout = <%= ViewData["SessionTimeout"].ToString(); %>;
var approximateStart = new Date();
var notifyAfter = new Date(approximateStart + (sessionTimout - 1)*60*1000);
function startCountDown() {
setTimout(function() {
var now = new Date();
document.getElementById('countDown').style.display = 'inline';
document.getElementById('countDown').innerHTML = "Countdown: " + now.getMinutes();
if (now >= notifyAfter)
alert('About to expire...');
}, 5000);
}
document.onload=startCountDown;
</script>
Escreveu a visão no bloco de notas, então verifique a sintaxe. Também não me lembro exatamente das coisas do DateTime em JS.
De qualquer forma, você deve ver a ideia.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow