我正在开发一个多租户的asp.net应用程序,并想知道以下是否是一种简化登录过程的可行方法。
我想为每个帐户提供自己唯一的地址,例如www.website.com/customer1,www.website.com/customer2,wwwwebsite.com/customer3等。
customer1文件夹不存在,404处理程序页面将从地址的customer1部分推断出该帐户。然后,它将显示标准登录页面,但也可以包括客户的徽标和自定义内容,并且还知道在尝试登录时,它必须仅针对与customer1帐户关联的帐户检查用户名。
我建议的流程是一个黑客攻击,我想知道是否有更优雅的方法来实现这一目标。
答案 0 :(得分:1)
您是否考虑过使用ASP.NET routing来执行此操作?只需定义您需要的任何自定义路由,并让ASP.NET将您的客户重定向到自定义登录页面。
请注意:.NET 3.5中添加了ASP.NET路由。
答案 1 :(得分:1)
如果您有.Net 4可用,请尝试查看ASP.Net Routing以建立所有“customer1”类型的地址。然后,您可以在默认页面上抓取路径加载应用适当的样式,甚至可以根据需要使用不同的功能。
答案 2 :(得分:0)
我更喜欢子域来识别租户。然后,您可以使用相同的底层代码库来解决问题,并且每个租户都没有讨厌的虚拟目录文件夹:
http://cusotmer1.website.com
http://cusotmer2.website.com
http://cusotmer3.website.com
使用此方法稍后缩放也更容易。如果您需要子域1-100在服务器A上运行,那么它就是一个简单的DNS /负载均衡器......或者用于指导流量变化的任何内容。
关于路由的注意事项:它非常适合您的应用程序,但是您是否希望每次添加客户端时都更改路由规则?