我一直在研究如何在.NET MVC中进行自定义profileprovider。 看起来很复杂。还有其他选择吗? 这是我的主要关注点,为什么人们会使用客户资料提供商?如果他们想要有关用户的额外信息,为什么他们不只是使用带有userId或userName作为外键的aspnet_Users与OneToOne关系创建另一个表?
请澄清。我正在尝试实现用户配置文件功能,但我不想走错路。
由于 DG
答案 0 :(得分:1)
(不确定这是否有助于谈论自定义个人资料提供者......除非我被误解......)
IMO,无论你做什么.. 避免(烘焙)ASP.NET Membership
不惜一切代价!它太棒了,你会想用钝器把自己刺入眼睛:(
相信我。避免它。
为什么:Should I use the built-in membership provider for an ASP .NET MVC application?
那么......我们可以做些什么呢?
滚动您自己的用户名/密码并利用内置的Forms Authentication
非常简单。对于我自己,我不喜欢在我自己的数据库中存储-any-密码..所以我更喜欢使用Facebook,Twitter或OAuth作为my mechanism for authentication ..这意味着我完成了一个简单的,基本的,自定义用户类。
我也create my own custom IPrincipal and IIdentity因为我想在cookie中存储更多信息,当一个人经过身份验证后,Forms Auth会创建这些信息。这有助于使我的控制器中的代码更清洁,更简单。
例如,我将经过身份验证的人的userId存储在加密的cookie中。 (默认选项是仅存储Name
)。我还存储了一两件东西..但你明白了。这样,我并不总是点击数据库来检索任何用户数据或在会话中存储此垃圾。
随着你自己的滚动,你可以创建额外的元数据(生日?妈妈的婚前姓名?社会安全号码(笑话))..并拥有额外的个人资料数据。同桌?额外的桌子?谁在乎...这是一个让以后让路的决定(并且易于解决)。让你的模型正确,IMO :)然后,一旦你锁定你的模型,你现在知道什么是必需的,什么是可选的..然后你可以做出一些数据库决策。
<强> TLDR吗
IPrincipal
和IIdentidy
以真正撼动您的世界。GL HF,不要用钝的勺子刺入你的眼睛!