使用 ASP.NET MVC 设置路由 {tenant}/{controller}/{action}/{id}?
我想设置一个多租户 ASP.NET MVC 应用程序。理想情况下,此应用程序应具有包含 {tenant}/{controller}/{action}/{id}
的路由,每个 tenant
代表应用程序的一个逻辑实例(简单地说独立的多用户帐户)
我仍然不清楚如何做到这一点。有任何指南可用于使用 ASP.NET MVC 设置此类多租户方案吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我目前正在使用 ASP.Net MVC、表单身份验证和用于成员/角色/配置文件的 SQL 提供程序开发一个类似的项目。这是我正在采取的方法:
将默认路由注册为 `{tenant}/{controller}/{action}/{id}
更改标准 MVC 模板附带的 FormsAuthenticationService 的默认行为。它应该将身份验证票证的 UserData 设置为包含租户名称(来自您的路由)。
在您的 global.asax 文件中执行一些租户安全检查并允许在一个成员数据库中的租户之间进行用户分区
对每个租户数据进行分区。这里有两个选项:
4a。为每个租户使用单独的数据库。这为您的租户提供了最佳的数据安全性。在共享成员资格数据库中,添加一个以每个租户的唯一 appid 为键的表,并使用该表来存储和检索基于当前租户的连接字符串。
4b。将所有数据存储在一个数据库中,并为每个表设置唯一的租户 ID。这为您的租户提供的数据安全性稍差,但仅使用一个 SQL Server 许可证。
对
I am currently working on a similar project using ASP.Net MVC, Forms Authentication and the SQL providers for Membership/Roles/Profile. Here is the approach I am taking:
Register the default route as `{tenant}/{controller}/{action}/{id}
Change the default behavior of the FormsAuthenticationService that comes with the standard MVC template. It should set the UserData of the authentication ticket to include the tenant name (from your route).
In your global.asax file to do some tenant security checking and allow partioning of users between tenants in one membership database
Partition each tenants data. Here are two options:
4a. Use a separate database for each tenant. This provides the best data security for your tenants. In the shared membership database, add a table that is keyed on unique appid for each tenant and use this table to store and retrieve the connection string based on the current tenant.
4b. Store all data in one database and key each table on the unique tenant id. This provides slightly less data security for your tenants but uses only one SQL Server license.
您将找到这些 链接 有用。
You will prob find these links useful.