繁体   English   中英

在我的Web应用程序中对用户配置文件采取的最佳方法是什么?

[英]What is the best approach to take for user profiles in my web application?

我目前正在构建一个ASP.NET MVC Web应用程序。 我的站点安全性(当前)构建在System.Web.Security Membership模型的扩展之上,在该模型中,我进行了扩展:

  • AuthorizeAttribute
  • 会员提供者
  • 角色提供者

这足以满足安全机制的要求-尽管它使我可能可以做得更简单的许多事情变得复杂。 但是,它已经完成了,这是一次非常有用的学习体验。 尽管稍后,我仍然可以将其全部删除,并使用更适合该站点的模型来代替它-我想将所有用户配置文件信息保留在为该站点专门建立索引和构建的单个表中。

现在,我着手开发用户个人资料。 与基本的用户登录系统相比,我需要存储更多的用户信息。 我已经检查了ProfileProvider,似乎它是完全不同的蠕虫病毒。 我喜欢它足够灵活,可以直接从web.config配置用户配置文件,而不必重建我的对象,而ProfileProvider处理其余的事情。 令我感到恐惧的是PITA,它导致在数据库上运行查询或报告。 这个事实可能使我对ProfileProvider的判断蒙上阴影。 ProfileProvider甚至是用于此的正确模型吗?

我应该走与定制现有系统还是定制构建自己的系统相同的道路?

一方面,它不支持ProfileProvider的自定义,这可能是一种有用的学习体验,但另一方面,我可以看到,它迅速成为报告和查询的噩梦。 但是我自己编写代码将使查询/报告变得非常简单,但是我不会学到太多。

如果有人对ProfileProvider模型的使用或自定义有任何经验(如果确实是我应该使用的),并且可以将我引向有用的阅读材料的方向,或者可以将我引向更有用的方向,我将不胜感激它。

提前致谢。

我使用数据库中的表来实现安全性。 基于表的方法易于实现,易于理解,并且只需将表连接到要修剪的项目表即可进行安全修剪。 报告非常简单,基于表的安全性也可以用于角色。

我只是发现ASP.NET MVC中的现有安全模型很麻烦,并且没有执行我需要做的某些事情。 特别是,很难将属性应用于需要从数据库访问ID的文档记录之类的东西,因为您最终将记录查找了两次。 一次在属性类中,一次在控制器方法的存储库中。

在其他所有条件都相同的情况下,我宁愿维护一个安全系统而不是维护两个。 因此,我使用内置的安全性对用户进行身份验证,但是之后我切换到基于表的安全性。

我在一些书籍和许多博客中读到,要走的路是根据Microsoft提供的基类实现自己的MembershipProvider,RoleProvider和ProfileProvider,这就是我所做的。 但是最后,我最终将所有代码更改为自己的基于自定义的安全模式,这为我提供了所需的所有灵活性。

问题是这些提供者做出了很多可能不适合您系统的假设。 例如,MembershipProvider的create方法需要以问题和答案作为参数(我不需要),或者如果您需要其他属性,则它开始变得麻烦编码和维护。而且,我们不要谈论对其进行测试...

就像您说的那样,学习经验总是很好的,但是我为满足自己的需求而必须维护的代码量却不值得。

至于AuthorizeAttributte,我所做的是创建了适合自己的安全模式的过滤器。

我的建议? 如果您的要求符合Microsoft认为ProfileProvider的外观,请继续使用。 如果没有,建立自己的。 您可以复制它们执行的一些实践,但是它使您可以自由更改,无论何时何地。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM