gpt4 book ai didi

asp.net-mvc - 维护用户 ID (MVC) 的最佳实践

转载 作者:行者123 更新时间:2023-12-04 15:02:35 24 4
gpt4 key购买 nike

我使用 FormsAuthentication,但我添加了一个自定义 MemberShipProvider 来验证自定义用户表。

所有包含“用户数据”的表都有一个 idUser 列,所以我需要维护用户 ID 以便向用户展示他的数据。

以前我使用过 session 变量(ASP.NET Webform),但是当我将 Web 应用程序重写为 MVC 时,我想问一下通常认为什么是最好的方法。

session 变量仍然是保存 idUser 的最佳位置,还是我应该添加一个自定义“Current.User.Identity”,除了用户名之外还保存一个公共(public) userId?

还是我应该选择完全不同的方法?

最佳答案

当我为 MVC 实现自定义成员资格提供程序时,我遇到了同样的问题。我最终做了两件事。我将用户的 ID 存储在 ProviderUserKey MembershipUser 的字段目的。见 provideruserkey .然后回答你的问题,是的,我从 System.Web.Security.IPrincipal 创建了一个自定义主体,尽管我后来继承自 System.Web.Security.RolePrincipal相反,因为我想要对角色的支持。

public class MyPrincipal : RolePrincipal
{
public Guid Id { get; set; }

public MyPrincipal(string providerName, IIdentity identity, Guid id) : base(identity)
{
Id = id;
}
}

更新:我不想在我的情况下使用 session 的原因是因为我已经为应用程序禁用了它。我读过 MVC 背后的核心概念是关注点分离,这与 Web 的工作方式密切相关,它是无状态的。虽然我不记得我在哪里读到的,现在我试着记住了。但是,我确实还记得阅读过,如果您可以消除 session ,则应该这样做。它将允许 IIS 处理来自您的应用程序的同时请求,而不必等待一个请求完成(并释放用户的 session ),然后下一个请求才能使用 session 并发送它的响应。其中最大的影响是使用 Ajax 加载页面内容。

关于asp.net-mvc - 维护用户 ID (MVC) 的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9675471/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com