【发布时间】:2019-08-24 16:19:15
【问题描述】:
我正在尝试获取一个简单的 MVC 登录项目,该项目将检查正确的用户是否已登录,然后将完成项目导航以保持检查会话超时。
家庭控制器:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult About(LoginUser model)
{
if (model.UserId == "")
{
HttpContext.Session.SetString("UserId", "TestUserLoginID"); //hardcoding for current scenario
}
else
{
HttpContext.Session.SetString("UserId", model.UserId.ToString()); //hardcoding for current scenario
}
return RedirectToAction("Index","Dataaaaa");
}
数据aaaa控制器: (在这里我想使用超时设置,如果它已过期,那么只需取消所有请求。一种身份验证)
[Timeout]
public class DataaaaaController : Controller
{
public IActionResult Index()
{
return View();
}
}
Timeout.cs:
public class Timeout: ActionFilterAttribute
{
private static readonly HttpContext context;
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (context.Session == null)
{
filterContext.Result = new RedirectResult("~/Home/Index");
return;
}
base.OnActionExecuting(filterContext);
}
}
Startup.cs 中的一些变化:
public void ConfigureServices(IServiceCollection services){
//some code
services.AddSession(s => s.IdleTimeout = TimeSpan.FromSeconds(30));
//some code
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
//some code
app.UseSession();
//some code
}
如果输入数据有效(现在是硬编码),我希望用输入数据设置 UserId。完成后,它将登录到应用程序,用户可以做事或导航。但是当 30 秒的空闲时间用完时,它应该无法工作并返回登录页面。
我想我错过了一些东西,一些代码。 还有为什么要使用“ValidateAntiForgeryToken”? 另一个疑问是,如果我想在会话中保存一些登录的用户数据,比如 id 或 name,那么如何进一步访问项目中的 JS 或 html 文件?
很抱歉输入错误和 MVC 新手,所以一半的事情都在上面。
【问题讨论】:
标签: c# asp.net-mvc asp.net-mvc-5