我没有很多MVC的经验,而且我正在查看许多不符合我需求的身份验证示例。
我需要从一个MVC应用程序提供对多个系统的访问。每个系统管理它自己的认证并提供类似的数据(即系统X和系统Y都提供小部件列表)。此外,用户可以登录到System X和System Y,并且能够从一个或另一个中查看窗口小部件,而无需重新提示输入凭据。
我的计划是使用简单路由{controller} / {action} / {systemName}(即Widgets / Index / SystemX)。细节很模糊,但我想我需要一个自定义的AuthorizeAttribute和一个SessionProvider。 SessionProvider将处理登录系统,该系统返回sessionID。当我从每个系统查询数据时使用此sessionID。最模糊的细节之一是为会话中的每个系统存储用户信息(SystemName,user,sessionId)的最佳方式。 SessionState的?饼干?的FormsAuthenticationTicket?别的什么?
我很想利用ASP.NET中的功能。 MVC,但我不需要为用户提供数据库。
欢迎任何批评或建议。
答案 0 :(得分:1)
如果SystemX和SystemY是同一应用程序的不同区域,那么最好使用ASP.NET MVC的Areas功能。这允许您将应用程序划分为区域,这些区域与逻辑上相关的控制器,视图,模型等组。
例如,单个大型电子商务应用程序可能会划分为代表店面,产品评论,用户帐户管理和购买系统的区域。每个区域代表整个应用程序的单独功能。
每个区域都可以拥有自己的web.config和身份验证方法(例如ASP.Net MVC 3 Areas and Mixed Mode Authentication),这样可能有所帮助。
如果SystemX和SystemY本质上是相同的小部件列表功能,但仅适用于不同的客户端,您可能需要查看multi-tenancy in ASP.NET MVC。