在我的宠物项目中,我想要一个具有以下要求的用户系统:

  • 它需要与 db4o 作为持久性模型
  • 我想使用 DI(通过 涡轮)将所需的依赖项传递给我的用户模型
  • 它需要能够轻松插入到 asp.net-mvc
  • 它需要可以轻松测试
  • 它需要像 SO 一样支持匿名用户
  • 我希望将身份验证和授权分开(第一个可以没有第二个)
  • 它需要安全

我知道我在这里将一些技术放在功能之前,但由于它是一个宠物项目,并且我想学习一些新东西,我认为将它们作为需求包含在内是合理的。

在自己滚动的过程中,我意识到我可能正在遭受一些痛苦 NIH 综合症。
由于我不太喜欢 asp.net 中现有的用户框架有多么不必要的复杂,它实际上主要只是有关安全性的所有更复杂的东西,现在让我产生了一些疑问。继续我自己的行动是否值得捍卫?如果不是,您将如何利用现有的基于 IPrinciple 的框架来满足所有上述要求?

有帮助吗?

解决方案

在我看来,您想要做的就是推出您自己的自定义 .NET 会员提供程序。

它将允许您使用内置的 ASP.NET 身份验证/授权 属性s 在您的控制器操作上,同时让您完全控制提供程序内部的实现(这将允许您对其进行编码以满足上述要求)。

直接来自MSDN...

实施会员提供者

其他提示

我认为您认识到您考虑的薄弱部分在哪里:也就是说,你已经将如何做你正在做的事情作为你这样做的动机和国家卫生研究院(有趣的是:我以前从未见过)问题。

抛开这些不谈,您的提供程序是您可以重用的,并且它可以简化您未来的一些工作。它还应该有助于您进一步熟悉该问题。只要您了解 ASP.NET 框架,以便在需要时也可以使用它(并且不专业,因此如果您不使用工具,您将不知道自己在做什么),那么我相信你已经精心设计了你的防御。

正如 DOK 提到的,请注意,无论您的其他功能是什么,您都不要在这里自行部署,以避免手头的更大任务。不要让这成为一种干扰:它应该是您的应用程序真正需要的东西。如果不是,那么我会倾向于专注于软件的核心任务。

如果您继续创建自己的自定义解决方案,您将更好地了解它的难度以及您想要什么功能。这将帮助您评估未来项目的现成解决方案。

OTOH,花时间开发已经可用的功能意味着您不会花时间研究项目的主要功能。除非身份验证和授权是您项目的主要组成部分,否则您可能会考虑在另一个领域投入时间并扩展您的知识。

我也在使用 ASP.net MVC 和 db4o 开发一个宠物项目,并做了同样的事情,所以至少你不是唯一一个走这条路的人:)。我开始使用 db4o 作为持久层的最大原因之一是,如果你被迫使用复杂的 SQL 语句和贫乏的域模型。

由于我有复杂的授权需求,需要在 db4o 和 Solr 索引中持久化(和同步),所以我开始致力于推出自己的索引,但只是因为我预先知道这是我的宠物项目的关键功能之一,所以我开始尝试推出自己的索引。想要100%的控制权。

现在,我可能仍然使用 .Net 会员资格提供程序进行身份验证,但不(仅)用于对象授权,但只有在我使用我自己的 POC 验证我的授权需求之后。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top