gpt4 book ai didi

asp.net-mvc - MVC 4、成员资格/配置文件和 aspnet_resql

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

我正在开发一个 MVC 4 应用程序。我正在研究成员(member)身份验证和个人资料模块,我有点困惑。

我很困惑,因为似乎有两组授权/配置文件模块在幕后工作:

精简版

有两组授权表:一组是在您创建新的 MVC 4 Internet 应用程序时创建的
第二个是在您运行 aspnet_regsql 时创建的。
数据以一种令人困惑的方式从两组中保存和提取。

这两个集合是如何关联的:
什么保存在哪里?
为什么要在两组中创建用户?
等等

长版

设置 1

我创建了一个新的 MVC 4 Internet 项目。它具有注册用户和创建角色的能力。自动生成的数据库包含以下表格:Users、Roles、UserInRoles、Memebership、Profiles。
没有存储过程。
授权工作正常:用户数据和角色已正确保存在用户、角色和 UserInRoles 表中。

设置 2

然后我继续为站点用户添加配置文件。我跟着 Joel's answer 。运行代码时点击这一行:
AccountProfile.CurrentUser.FullName = "史努比";
我收到了这个错误:

找不到存储过程“dbo.aspnet_CheckSchemaVersion”。

我针对之前创建的数据库运行了 aspnet_regsql,并创建了预期的一组 aspnet_ 表和存储过程。
再次测试了我的代码。
这次它工作正常,并且配置文件属性被保存到 aspnet_Profile 表中(这是意料之中的)。

在下一步中,我创建了一个新用户。用户是在两个用户和 aspnet_Users 表中创建的(具有不同的 UserId 值)——请参见此处 picture 1

将属性 FullName=Snoopy 添加到他的个人资料中。

运行 Membership.GetUser().ProviderUserKey 从表 Users 中返回 UserId。
运行 AccountProfile.CurrentUser.FullName 返回“史努比”。
请看这里 picture 2

这非常令人惊讶,因为这意味着系统以某种方式知道如何将表 Users 中的记录与表 aspnet_Profile 中的记录相关联,其中 UserId 字段来自表 aspnet_users。
顺便说一句,我验证了表 Profiles 是空的,因此没有从那里获取值。

那么这里发生了什么?
这种行为是预期的行为吗?
或者 Jole 的回答是错误的,因为在 MVC 4 应用程序中实现 Profile 有其他一些(更好的?)方法,而我所做的就是在工作中投入一把 Spanner ?

最佳答案

关于asp.net-mvc - MVC 4、成员资格/配置文件和 aspnet_resql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12392139/

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