学习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的身份认证类似,在此不再重复截图,后续继续学习更深入的用法。

参考文献:

1https://www.cnblogs.com/boonya/p/18557417

2http://www.pzhseo.com/article/dipjeg.html

3https://cloud.tencent.com/developer/article/1783650

4https://blog.csdn.net/ousetuhou/article/details/135392012

5https://blog.csdn.net/weixin_42217767/article/details/92760353

6https://www.cnblogs.com/leafroc/p/18347413

相关推荐
医疗信息化王工8 小时前
医院自律端系统——预警处置模块全栈实战(ASP.NET Core + Vue3 + Quartz 定时调度)
mysql·postgresql·vue·asp.net core·quartz
遇事不決洛必達2 天前
【爬虫随笔】深入理解 HTTP/HTTPS 协议、接口交互与会话机制
爬虫·网络协议·http·https·session
Irissgwe4 天前
5-1、HTTP cookie与session
linux·http·cookie·session
tryqaaa_8 天前
学习日志(五)【php反序列化全加例题】【pop链,字符逃逸,session,伪协议】
android·学习·php·web·pop·session
rising start16 天前
Web认证机制演进
架构·jwt·session
Esofar22 天前
Dddify:给 ASP.NET Core 项目一套轻量、清晰、可落地的 DDD 基础设施
c#·ddd·asp.net core·cqrs·dddify·clean architecture
wangjialelele24 天前
HTTP Cookie 和 Session
http·cookie·session
随缘而动,随遇而安1 个月前
第九十八篇 工程落地视角:Session/Cookie/Token 原理辨析与大数据实战
大数据·spark·token·cookie·session
曲幽1 个月前
让FastAPI Agent真正记住你:聊聊会话记忆与持久化存储的落地实践
redis·python·postgresql·fastapi·web·chat·async·session·ai agent
CSharp精选营1 个月前
.NET 8 Web开发入门(三):解构引擎——依赖注入(DI)与中间件管道
中间件·asp.net core·依赖注入·ioc容器·请求管道·服务生命周期