【问题标题】:How to use ASP.NET Identity without a database如何在没有数据库的情况下使用 ASP.NET Identity
【发布时间】:2014-08-28 07:34:39
【问题描述】:

我正在尝试在 MVC 5 项目中使用新的 ASP.NET 标识来实现自定义身份验证。

我有一个单一用户名和密码,我想用它来限制用户可以通过控制器和视图上的 [Authorize] 标签查看网站的哪些页面。 (简单)

我正在从 FormsAuthentication 模型迁移,这就像将凭据放入 web.config 一样简单。

因为我只有一个用户名和密码我不想使用数据库作为 UserStore,而是 我希望 ASP.NET Identity 从web.config 中的自定义配置部分(不要担心那部分)。

经过大量搜索,我找不到不依赖数据库进行 ASP.NET 身份验证的代码示例。

所以我正在寻找一个代码示例,在身份验证时,用户可以输入自定义代码,以根据 web.config 的自定义 ConfigurationSection 中的凭据检查用户名和密码。

谁能指点我正确的方向谢谢。

更新:我试过查看这个代码示例,但它甚至没有开箱即用.. 很糟糕。 http://code.msdn.microsoft.com/Simple-Aspnet-Identiy-Core-7475a961

更新:我不想使用 FormsAuthentication 的原因是我正在编写一个将安装到 Web 应用程序中的 NuGet 包。 NuGet 包将做的一件事是在 web.config 中创建一个自定义 ConfigurationSection,其中包括(除其他外)单个用户名和密码。我认为这会更安全,因为它不会更改目标 Web 应用程序中当前的任何现有 FormsAuthentication 设置。

更新:我想我已经成功了。将很快发布调查结果。

--李

【问题讨论】:

  • ASP.NET MVC [Authorize] 属性可以与 FormsAuthentication 一起使用;您不需要使用 ASP.NET Identity,实际上这样做没有任何意义。您是否在使 [Authorize] 属性与 FormsAuthentication 过程一起工作时遇到问题,或者是否有其他原因您不想再使用 FormsAuthentication?
  • 嗨,所以我最初使用 FormsAuthentication 并且这样做没有问题。但是我想使用新的 Identity 东西,因为我正在编写一个 NuGet 包,其代码在运行时需要它自己的凭据,我安装 NuGet 包时,不想通过将我自己的 FormsAuthentication 设置插入 web.config 来干扰任何可能的现有 FormsAuthentication 设置。

标签: asp.net-mvc-5 asp.net-identity


【解决方案1】:

您不必迁移到 Identity 框架,FormsAuthentication 仍然有效。 Andrew 是对的,在这里使用 Identity 框架没有什么意义,因为这完全是为了管理用户。

但是,如果你坚持使用它,你可以实现自己的UserManagerIUserStore。一些指导可以在Scott K. Allen blog post 中找到。请参阅底部的链接 - 实现示例 - 您可以获取其中的一些并转换为您的需求。

我想你的IUserStore 会很简单,因为只有一个用户,而且大多数方法都不必实现。对于需要的(我认为您需要FindUserById 和相关),您需要通过ConfigurationManager 联系web.config

【讨论】:

  • 啊,我希望有一个不需要数据库并从 web.config 检索凭据的“完整”解决方案。我曾尝试扩充各种代码示例,但未成功。
  • 你的案子恐怕没有完整的解决方案。
  • 你是说不可能编写一个自定义的 ASP.NET Identity 实现来从 web.config 中的自定义 ConfigurationSection 检索凭据?我认为新身份的全部意义在于使其具有超级可扩展性?
  • 我是说还没有人写。而且完全有可能。
  • 布里尔。好吧,我试图拼凑起来成为第一个。如果这篇文章没有成果,我可能会尝试获得收益。
猜你喜欢
  • 1970-01-01
  • 2018-08-03
  • 2015-10-19
  • 2023-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-17
  • 2015-08-09
相关资源
最近更新 更多