簡體   English   中英

針對 CNIC 號碼生成 session 並在 5 分鍾不活動后過期並將用戶重定向到主頁

[英]Generate session against CNIC Number and expire it after 5 minutes of inactivity and redirect the user to Homepage

我正在創建一個 ASP.NET 核心 MVC 應用程序,我希望在Homepage上要求用戶輸入他/她的 CNIC(身份證)號碼。

之后,他將能夠導航到應用程序上的任何頁面。 但是,如果他/她空閑 5 分鍾或更長時間,那么在 5 分鍾后,如果他/她嘗試執行任何操作意味着嘗試 go 到任何其他頁面,那么他/她將被重定向到“主頁”並需要輸入他/她的 CNIC 號碼。

我如何在 ASP.NET 核心 MVC 應用程序中使用會話來實現此功能?

謝謝

請允許我發布一個示例,這只是一個示例,但它對我有用。

首先,我有一個 controller 主頁操作,它將存儲一個 session。在您的場景中,您必須根據用戶輸入的內容存儲 session。

public IActionResult Index()
        {
            var value = HttpContext.Session.GetString("Code");
            if (value == null) {
                HttpContext.Session.SetString("Code", "001");
            }
            return View();
        }

然后我創建了一個動作過濾器來攔截所有的請求,過濾器應該檢查傳入的請求是否直接到主頁以及是否有 session 值。 所以過濾器應該是這樣的:

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;

namespace WebMvcNet3.Filters
{
    public class SessionFilter : IActionFilter
    {
        public void OnActionExecuting(ActionExecutingContext context)
        {
            var value = context.HttpContext.Session.GetString("Code");
            var path = context.HttpContext.Request.Path;
            if (value == null && path != "/Home/Index") {
                context.Result = new RedirectResult("~/Home/Index");
                context.Result.ExecuteResultAsync(context);
            }
        }

        public void OnActionExecuted(ActionExecutedContext context)
        {
            // Do something after the action executes.
        }
    }
}

然后在startup.cs中注冊過濾器,不要忘記添加app.UseSession(); 在配置方法中:

public void ConfigureServices(IServiceCollection services)
{
    services.AddSession(options => {
        //options.IdleTimeout = TimeSpan.FromMinutes(5);
        options.IdleTimeout = TimeSpan.FromSeconds(60);
    });
    services.AddControllersWithViews();
    services.AddScoped<SessionFilter>();
    services.AddControllers(config =>
    {
        config.Filters.Add<SessionFilter>();
    });
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM