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

相关推荐
安 当 加 密13 天前
【安当产品应用案例100集】043-安当物联网数据安全传输方案
物联网·数据安全·身份认证·密钥管理·加密技术·固件签名·轻量化协议
EdisonZhou20 天前
使用MCP C# SDK开发MCP Server + Client
llm·aigc·asp.net core·.net core
pitt19971 个月前
AI 大模型统一集成|微服务 + 认证中心:如何保障大模型 API 的安全调用!
微服务·spring security·cookie·session·大模型api·认证中心
超软毛毛虫1 个月前
ASP.NET Core 模型验证消息的本地化新姿势
asp.net core·localization
人生偌只如初见1 个月前
NebulaGraph学习笔记-SessionPool之getSession
java·graph·nebula·session·pool
gywl2 个月前
Spring Web MVC入门
spring·json·mvc·注解·cookie·session
lixww.cn2 个月前
ASP.NET Core用MediatR实现领域事件
ddd·asp.net core·mediatr
lixww.cn2 个月前
ASP.NET Core SignalR向部分客户端发消息
javascript·websocket·vue·asp.net core·signalr
lixww.cn2 个月前
ASP.NET Core SignalR的协议协商
asp.net core·signalr
lixww.cn2 个月前
ASP.NET Core SignalR的分布式部署
redis·消息队列·asp.net core·signalr