由一个业务需求引发的对 ASP.NET 全局变量的调研及结果

简介: 由一个业务需求引发的对 ASP.NET 全局变量的调研及结果

前言

前段时间使用 ASP.NET MVC + Form Auth 做了一个单机小项目,当时对于采用什么方式来存储登录状态有些纠结,通常的做法是使用 Cookie 或者 Session,但是我对这两种方式都不是十分满意,于是花了点时间调研了 ASP.NET 的全局变量使用方式,希望能找到更好的方式来存储登录状态。

以下是本次调研过程及总结。

调研过程及总结

Application

测试过程:

  1. LoginController 在 Chrome 浏览器写入 Application[“Test”] 的值
  2. 在 Edge 浏览器打开,Application[“Test”] 的值依然存在

总结

Application 是全局性的,不太适合存储登录状态

Session

测试过程:

  1. LoginController 在 Chrome 浏览器写入 Session[“Test”] 的值
  2. 重新刷新 Chrome 浏览器页面,值存在
  3. 在 Edge 浏览器打开,Session[“Test”] 的值不存在

结论

Session 适合存储登录状态,其值存储在服务器端,重启 IIS 或者到时间(默认是20分钟)等方式都会使其丢失

Cookie

测试过程:

  1. LoginController 在 Chrome 浏览器写入 HttpCookie [“Test”] 的值
  2. 重新刷新 Chrome 浏览器,值存在
  3. 在 Edge 浏览器 打开,cookie 不存在

结论

Cookie 适合存储登录状态,其值存储在客户端,不能存储太多信息,安全性没有 Session 好

静态变量

测试过程:

  1. LoginController 在 Chrome 浏览器写入静态变量 GlobalTest.MyLogin 的值
  2. 在 Edge 浏览器打开,GlobalTest.MyLogin 的值依然存在

结论

静态变量是全局性的,不太适合存储登录状态

后记

权衡之下,最终还是选择使用 Session,在单机模式下,Session 相对比较安全可靠。当然还可以把登录状态持久化到本地文件或者数据库中,不过这又是另外一回事了,维护起来也相对比较麻烦。


相关文章
|
.NET 数据库 开发框架
ASP.Net全局变量的设置和读取方法
本文介绍两种ASP.Net项目中全局变量使用的方式。web.config文件 和 Gloab文件。以下分别说明:方法一:web.config文件——设置:在web.config文件里添加关键字key是通过标记来实现的,但是appSettings标记通常放在.....标记外面。
911 0
|
7天前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
20 7
|
5天前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
16 0
|
29天前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
29 0
|
30天前
|
开发框架 前端开发 安全
ASP.NET MVC 如何使用 Form Authentication?
ASP.NET MVC 如何使用 Form Authentication?
|
1月前
|
开发框架 .NET
Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
79 0
|
4月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
145 0
|
4月前
|
开发框架 前端开发 JavaScript
JavaScript云LIS系统源码ASP.NET CORE 3.1 MVC + SQLserver + Redis医院实验室信息系统源码 医院云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件,云LIS系统围绕临床,云LIS系统将与云HIS系统建立起高度的业务整合,以体现“以病人为中心”的设计理念,优化就诊流程,方便患者就医。
63 0