学习ASP.NET Core的身份认证(基于Session的身份认证1)

ASP.NET Core使用Session也可以实现身份认证,关于Session的介绍请见参考文献5。基于Session的身份认证大致原理就是用户验证成功后将用户信息保存到Session中,然后在其它控制器中从Session中获取用户信息,用户退出时清空Session数据。百度基于Session的身份认证也有更高级的应用,如参考文献6,不过本文先学习并实践最简单的用法,后续再学习更进一步的用法。
  在Program文件内先调用builder.Services.AddSession函数添加Session服务,可以同时添加如下设置,主要是关于Cookie相关配置(详见参考文献5的Session与Cookie的区别)及过期时间IdleTimeout。然后调用app.UseSession()启用服务,最简单的用法就是这两句。

csharp 复制代码
...
...
builder.Services.AddDistributedMemoryCache();
builder.Services.AddSession(options =>
        options.IdleTimeout = TimeSpan.FromDays(1)
    );
...
...
app.UseSession();


  然后在登录函数中用户验证通过后调用HttpContext.Session.SetString或者Set函数保存用户信息,登出函数中调用HttpContext.Session.Clear清空数据。

csharp 复制代码
if (name=="gc_2299" && password=="123456")
{
    HttpContext.Session.SetString("user", name);
    return RedirectToAction("Index", "Home");
}

在其它控制器中获取用户信息时,最简单的用法如下所示:

csharp 复制代码
if (!HttpContext.Session.IsAvailable ||
    string.IsNullOrEmpty(HttpContext.Session.GetString("user")))
{
    return RedirectToAction("Login", "Account");
}

ViewData.Add("CurUser", HttpContext.Session.GetString("user"));
return View();

程序运行效果与基于Cookie的身份认证类似,在此不再重复截图,后续继续学习更深入的用法。

参考文献:

1\]https://www.cnblogs.com/boonya/p/18557417 \[2\]http://www.pzhseo.com/article/dipjeg.html \[3\]https://cloud.tencent.com/developer/article/1783650 \[4\]https://blog.csdn.net/ousetuhou/article/details/135392012 \[5\]https://blog.csdn.net/weixin_42217767/article/details/92760353 \[6\]https://www.cnblogs.com/leafroc/p/18347413

相关推荐
学习网安的doro9 天前
3a服务器的基本功能1之身份认证
服务器·网络·学习·安全·身份认证·ac
ArabySide16 天前
【ASP.NET Core】探讨注入EF Core的DbContext在HTTP请求中的生命周期
后端·http·asp.net·asp.net core·efcore
ChaITSimpleLove17 天前
.NET9 使用 OData 协议项目实战
restful·asp.net core·webapi·仓储模式·开放数据协议·分层隔离·.net odata
饭勺oO25 天前
从WebApi迁移到Minimal API?有了这个神器,小白也能10分钟搞定!
asp.net core·minimalapi
头发那是一根不剩了1 个月前
双因子认证(2FA)是什么?从零设计一个安全的双因子登录接口
网络安全·系统设计·身份认证
艾希逐月2 个月前
系统安全之身份认证
系统安全·身份认证
FungLeo2 个月前
NodeJS Koa 后端用户会话管理,JWT, Session,长短Token,本文一次性讲明白
jwt·token·session·会话管理·cookies
代码的余温2 个月前
分布式Session处理的五大主流方案解析
分布式·session
专注VB编程开发20年3 个月前
在 ASP.NET 中,HTTP 处理程序(HttpHandler)是处理 HTTP 请求的核心组件
iis·asp.net·asp.net core
常州北格数字孪生3 个月前
宁德时代区块链+数字孪生专利解析:去中心化身份认证重构产业安全底座
区块链·数字孪生·身份认证·宁德时代·专利技术