如果应用程序保持空闲状态,如何使会话超时

系统三点

我想在 layout.cshtml 页面中添加会话超时功能。会话超时后,我必须显示 TimeOut div 以显示消息并再次重新登录。如何从函数 SessionLogOut() 调用超时 div

layout.cshtml 代码已在下面给出。

<head>

</head>    

<body onload="return disableBack()" ondragstart="return false;" ondrop="return false;">
    @if (HttpContextAccessor.HttpContext.Session.GetString("UserName") == null)
    {
        <div id="TimeOut" class=" text-center">Your session has expired, please<a href="/Home/Index" class="btn signout " style="padding: 1px 5px 1px 5px;">click here to login</a>again</div>
        <div class="main-content hidden">
            @RenderBody()
        </div>
    }
    else
    {
    }
<script type="text/javascript">
{
  $(document).ready(function () {

              SessionLogOut();
         });
 function SessionLogOut()
{
}
}
丽娜

如果要使用 js 显示 div,这里有一个工作演示:

@using Microsoft.AspNetCore.Http;
@inject IHttpContextAccessor HttpContextAccessor

<div id="session">
</div>

<script>
    $(document).ready(function () {
        var session = '@HttpContextAccessor.HttpContext.Session.GetString("UserName")';
        if (session == "") {
            SessionLogOut();
        }
    });
    function SessionLogOut() {
        $("div#session").append("<div id=\"TimeOut\" class=\"text-center\">Your session has expired, please<a href=\"/Home/Index\" class=\"btn signout\" style=\"padding: 1px 5px 1px 5px;\">click here to login</a>again</div>");

    }
</script>

对于您的标题是。请How can I make the session timeout if the application keep idle确保您已设置会话超时,如下所示:

services.AddSession(options =>
{
      options.IdleTimeout = TimeSpan.FromSeconds(5);
});

调用你设置会话的方法,然后调用其他方法,保持ide超过五秒后,刷新页面,超时div会显示。

结果:

在此处输入图片说明

整个 Startup.cs:

public void ConfigureServices(IServiceCollection services)
{
    services.Configure<CookiePolicyOptions>(options =>
    {
        // This lambda determines whether user consent for non-essential cookies is needed for a given request.
        options.CheckConsentNeeded = context => true;
        options.MinimumSameSitePolicy = SameSiteMode.None;
    });
    services.AddHttpContextAccessor();
    services.AddSession(options =>
    {
        options.IdleTimeout = TimeSpan.FromSeconds(5);
    });
    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    app.UseSession();

    app.UseHttpsRedirection();
    app.UseStaticFiles();
    app.UseCookiePolicy();
    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller=Home}/{action=Index}/{id?}");
    });
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

MFP V8.0应用程序的空闲会话超时

应用程序空闲时的连接超时

当用户在ASP.NET应用程序中处于非活动状态3分钟时,如何保持会话超时

如果REST应用程序应该是无状态的,那么如何管理会话?

如何防止共享主机上的IIS应用程序池中的空闲超时

如何更改共享托管服务提供商上的空闲超时ASP MVC应用程序?

MVC应用程序中的会话超时

会话状态与应用程序状态

在 NativeScript 中检测应用程序不活动/空闲超时

与每个具有不活动超时的Web应用程序保持一个(较长的)会话

如何减少应用程序的“空闲唤醒”?

用户如何保持登录我的Flutter应用程序的状态?

关闭应用程序后,SQL Server会话保持打开状态

XPages(应用程序超时与会话超时)与(服务器会话超时)

如何在核心Java应用程序中维护会话超时?

如何在Java Web应用程序中动态设置会话超时?

如何为每个Web应用程序设置tomcat会话超时

如何在Flutter中实现应用程序内超时会话

如何实现会话超时-Angular-Django应用程序与Azure AD的集成

Apache Tomcat应用程序的默认会话超时

更改Spring Web应用程序的默认会话超时

在 SAP Cloud Foundry 应用程序中捕获会话超时

Spring Boot应用程序在Apache之后的会话超时

如何检查登录用户是交互式的还是在WPF应用程序中处于空闲状态

当IIS应用程序池可能处于空闲状态时,如何允许作业在下班后运行?

如何修复等待应用程序在 XCUITest 中空闲的问题

如何延长应用程序挂起超时?

应用程序池工作进程空闲超时操作:挂起还是终止

应用程序池的启动模式和空闲超时操作之间是否有任何冲突?