学习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

相关推荐
冷冷的菜哥3 天前
ASP.NET Core上传文件到minio
后端·asp.net·上传·asp.net core·minio
ArabySide4 天前
【ASP.NET Core】双Token机制在ASP.NET Core中的实现
后端·asp.net core
Ice__Cai14 天前
Flask 之 Cookie & Session 详解:用户状态管理
后端·python·flask·cookie·session
学习网安的doro1 个月前
3a服务器的基本功能1之身份认证
服务器·网络·学习·安全·身份认证·ac
ArabySide1 个月前
【ASP.NET Core】探讨注入EF Core的DbContext在HTTP请求中的生命周期
后端·http·asp.net·asp.net core·efcore
ChaITSimpleLove1 个月前
.NET9 使用 OData 协议项目实战
restful·asp.net core·webapi·仓储模式·开放数据协议·分层隔离·.net odata
饭勺oO1 个月前
从WebApi迁移到Minimal API?有了这个神器,小白也能10分钟搞定!
asp.net core·minimalapi
头发那是一根不剩了2 个月前
双因子认证(2FA)是什么?从零设计一个安全的双因子登录接口
网络安全·系统设计·身份认证
艾希逐月3 个月前
系统安全之身份认证
系统安全·身份认证
FungLeo3 个月前
NodeJS Koa 后端用户会话管理,JWT, Session,长短Token,本文一次性讲明白
jwt·token·session·会话管理·cookies