gpt4 book ai didi

asp.net-mvc - 我应该如何在 ASP.Net MVC 站点中进行身份验证?

转载 作者:行者123 更新时间:2023-12-04 13:44:52 25 4
gpt4 key购买 nike

我有一个需要身份验证的区域的站点。现在,我在该区域的所有 Controller 上使用角色属性,并运行查询以检索该用户 ID 及其所有设置。

每次加载该区域的 Controller 时,我都在检索用户 ID 和设置,这对我来说似乎是一种代码或设计气味?我不确定我是否应该使用 session ,或者 ASP.Net MVC 2.0 是否提供了一些独特的方法来处理这个问题。另一个问题是安全性。

总的来说,我真的不知道该转向哪个方向。设计明智我希望用户登录到该区域时只检索一次用户 ID 和设置。现在,每次 Controller 加载时我都会获取 userId,然后如果需要,我也会每次都查询数据库以获取它们的设置。

最佳答案

关于安全的规则之一是你不应该尝试自己做。在不留下漏洞或后门的情况下正确地进行身份验证系统存在许多缺陷。因此,在这方面,您可能会考虑 .NET 附带的 SqlMembershipProvider。它可以与 MVC 一起使用,并提供获取角色和当前安全上下文的方法,易于设置和配置,并且比自己滚动更安全。

如果您不使用 SQL Server,您有几个选择。一种解决方案是使用 SQL Server Express 或 SQL Server Compact Edition 之类的东西来维护凭据。另一种解决方案是模仿 SqlMembrshipProvider 数据库架构,然后编写与该架构通信的自定义提供程序。

最后的选择是编写一个自定义 MembershipProvider 类。虽然这仍然是您自己的,但它会强制您进入 MembershipProvider 的结构,以便您可以在以后将其换成不同的(例如 ActiveDirectoryMembershipProvider),并提供用于与凭据和登录交互的通用接口(interface),例如可以轻松使用内置的登录控件。

如果您已经在使用 MembershipProvider 并且正在询问是否存储其他用户特定的数据,那么我会建议 SqlProfileProvider 以及我上面提到的关于 SqlMembershipProvider 的所有警告。 ProfileProvider 提供了一种结构,用于与当前登录的用户一起维护用户特定的数据。

了解更多信息:

  • Introduction to Membership
  • Implementing a MembershipProvider
  • ASP.NET Profile Providers
  • 关于asp.net-mvc - 我应该如何在 ASP.Net MVC 站点中进行身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2960091/

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