将2个不同的用户dbs集成到单个ASP.NET MVC memberip提供程序中?

时间:2009-08-18 20:45:53

标签: asp.net asp.net-mvc forms-authentication membership-provider

我正在开发一个需要根据两个不同数据库中的记录对用户进行身份验证的项目。所有管理员都存储在本地,需要完整的功能来管理他们的帐户(重置密码等)。常规用户针对另一个Web应用程序使用的其他数据库进行身份验证,因此我只需要检查他们的凭据是否正确。

在登录屏幕输入用户名/密码后,我的应用程序应检查它们是否存在于本地管理员表中。如果是这样,他们将被赋予“管理员”角色并允许访问。如果没有,它应该检查另一个应用程序的用户表,如果成功,则给他们一个“用户”角色。

该项目基本上是一本大型在线图书。用户只需要身份验证即可查看,评估部分和书签页面。评级/书签数据将与其唯一ID相关联。所有用户管理都在外部应用程序中处理。但是,管理员只能查看/编辑页面,不会对内容进行评级/加书签。他们的帐户将通过此管理区域进行管理。

在.NET MVC应用程序中实现此目的的最佳方法是什么?通过'this',我的意思是将登录/身份验证系统与两者集成,并根据哪个数据库确认其凭据为其分配角色。

提前致谢!

1 个答案:

答案 0 :(得分:0)

MVC与您的用户验证逻辑没有多大关系 - 您需要implement a custom membership provider来处理两个数据库的连接并执行验证。此成员资格类可以移植到任何应用程序,但它不是特定于MVC。

在您的自定义成员资格提供程序中获得逻辑后,您只需要在您的MVC应用程序中使用FormsAuthentication,其中有很多教程,here's a quick one

我要添加的与MVC相关的唯一提示是,您应该尝试在控制器中保留逻辑以进行视图决策。在你的视图中添加类似“<% if user == admin then renderPartial(this) else renderPartial(that) %>”的东西很诱人,但在我看来这违反了MVC原则。使用ViewModel或在控制器中填充ViewData会更好。