[英]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.