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

相关推荐
常州北格数字孪生5 天前
宁德时代区块链+数字孪生专利解析:去中心化身份认证重构产业安全底座
区块链·数字孪生·身份认证·宁德时代·专利技术
小王努力学编程9 天前
【Linux网络编程】http协议的状态码,常见请求方法以及cookie-session
linux·服务器·网络·网络协议·http·cookie·session
自由鬼20 天前
开源身份和访问管理(IAM)解决方案:Keycloak
服务器·数据库·安全·开源·身份认证·单点登录
安 当 加 密1 个月前
【安当产品应用案例100集】043-安当物联网数据安全传输方案
物联网·数据安全·身份认证·密钥管理·加密技术·固件签名·轻量化协议
EdisonZhou1 个月前
使用MCP C# SDK开发MCP Server + Client
llm·aigc·asp.net core·.net core
pitt19972 个月前
AI 大模型统一集成|微服务 + 认证中心:如何保障大模型 API 的安全调用!
微服务·spring security·cookie·session·大模型api·认证中心
超软毛毛虫2 个月前
ASP.NET Core 模型验证消息的本地化新姿势
asp.net core·localization
人生偌只如初见2 个月前
NebulaGraph学习笔记-SessionPool之getSession
java·graph·nebula·session·pool
gywl3 个月前
Spring Web MVC入门
spring·json·mvc·注解·cookie·session
lixww.cn3 个月前
ASP.NET Core用MediatR实现领域事件
ddd·asp.net core·mediatr