2009-12-24 69 views
0

我正在尝试将ASP.NET MVC用于我的新项目,并且期望用户身份验证应该相当简单。我的目标是在我的主数据库中有一个单独的用户数据库表。ASP.NET MVC用户认证 - 为什么它应该如此复杂?

我认为SqlTableProfileProvider应该是解决方案。所以我将相应的表添加到我的数据库中,并更改了web.config文件。但似乎无论我在那里改变什么,我的web应用程序仍然使用默认身份验证(通过ASPNETDB.mdf文件)。

可能是什么问题?

(我开始Web.config文件:)

+0

嗯,不知道我明白为什么如果我在这里发布我的web.config文件的开始,StackOverflow不显示它... – Serge 2009-12-24 14:27:06

+0

尝试将它包装在代码示例标记中。 – 2009-12-24 15:42:00

回答

1

看到这个reference如何创建SQL Server数据库的标准应用服务表和相关的数据库实体。一旦完成,它应该是一个简单的问题,即更改web.config文件中的默认应用程序服务连接字符串以使用内置提供程序来获取成员资格,角色和配置文件。

+0

那么,RTFM是很好的建议......;)但是,如果能获得有关如何使用我自己的表(一些额外的属性,如出生日期等)的分步指南, MVC用户认证。我预计它在ASP.NET MVC中相当简单,但它似乎不是。你见过这样的样品吗? – Serge 2009-12-24 15:38:43

+0

关于如何创建自己的会员供应商,还有另外一本手册,http://msdn.microsoft.com/en-us/library/f1kyba5e.aspx,但实际上我认为您可以使用内置成员资格完成所有工作,个人资料提供者 - 出生日期实际上是个人资料项目。如果您未实施成员资格提供程序 - 默认或自定义 - 则需要更改帐户登录/注销/更改密码操作。真正最简单的做法是使用内置表和提供者的钩子。接下来最简单的事情就是使用该模式作为自己实现的指导。 – tvanfosson 2009-12-24 15:54:22

+0

看来,SqlTableProfileProvider应该有所帮助,但我找不到任何与ASP.NET MVC一起使用它的例子。 – Serge 2009-12-24 16:16:00

1

做我所做的事,忘掉滚动自己的成员资格提供者等或使用sqltableprofileprovider - 而是通过关系将默认成员添加的表扩展到您自己的包含您要存储的额外数据的表。

因此,为您的数据库添加一个名为'Details'的表,然后将主键设置为与1关联到aspnet_Users表的主键。像其他人一样使用这张新表。当你想要用户的主键时,使用成员资格api来抓取它。

未经测试!

Guid userID = (Guid)Membership.GetUser(username).ProviderUserKey; 

然后将您需要的数据添加到您的详细信息表和您的设置。

对我来说似乎更灵活 - 尽管我可能做的都是错的! :)

+0

对不起,这应该是真正的评论上面的答案,因为它更多的做与那个讨论比直接回答您的问题。 – Sergio 2010-03-16 00:08:11

相关问题