c# - ASP.NET MVC 缓存用户信息(主体)
问题描述
我有一个在.NET Framework 4.5.2上运行的较旧的ASP.NET MVC 应用程序,它为用户使用Windows 身份验证(它是 Intranet),然后使用存储用户数据的自定义主体(用户权限、其他一些经常需要的元数据)。
我需要“缓存”这些数据,而不是在每次请求时重新加载它们,因为从多个来源获取它们的过程既昂贵又耗时。
例如,假设每小时重新加载它们就足够了。
我有哪些正确保存用户数据(自定义主体)的选项?
正如现在所做的那样,我们正在使用我不喜欢的解决方案,但想不出/找到更好的解决方案。
我们
WindowsAuthentication_OnAuthenticate
在global.asax.cs
- 如果没有有效的授权 cookie,我们会尝试通过以下方式创建一个:
- 我们加载用户的信息并创建我们的
CustomPrincipal
- 将其序列化并将其存储在
FormAuthenticationTicket
- 然后加密并存储在
HttpCookie
- 我们加载用户的信息并创建我们的
- 如果没有有效的授权 cookie,我们会尝试通过以下方式创建一个:
然后在执行中检索
Application_PostAuthenticateRequest
cookieglobal.asax.cs
HttpContext.Current.User
如果有 cookie ,则主体被反序列化并设置为主体
我尝试使用谷歌搜索,但我不知道如何正确询问并且无法获得我正在寻找的结果。感谢您提供有关解决此问题的首选方法的任何信息。
解决方案
推荐阅读
- node.js - NatsError:无法连接到服务器:错误:连接 ECONNREFUSED 错误
- matplotlib - 如何从 BinaryClassificationEvaluator 获得的指标中绘制 Pyspark 中的精确召回曲线?
- python - Python 使用 MCP3008 采样频率
- javascript - 如何解决 mongodb altlas 中的 UnhandledPromiseRejectionWarning?
- java - 如何在 Java 中从 jar 创建文件/文件夹?
- powershell - 如何在启动时启动永久运行的 powershell 5.1 脚本?
- sql-server - Always Encryption 功能是否仅适用于 SQL Server?在数据传输到客户端期间如何加密数据?
- validation - 关于 .net 核心实体框架 5 中带有希伯来语后者字段验证的 Url 的问题
- python - 尽管其中存在密钥,但字典不返回任何内容
- flutter - 在颤动中从文本字段中的其他小部件获取输入