我有使用Eclipse Scout制作的应用程序。我使用company_id id在数据库中的表中分隔租户。没关系。
我的问题是,如何为每个公司(租户)生成子域。
示例: 主域是:myapplication.com 公司(租户): 测试1 测试2
我想拥有URL的test1.myapplication.com,test2.myapplication.com
当我访问test1.myapplication.com时,我需要知道将为test1租户加载所有内容。
在登录页面上,我将查询:从用户那里选择SELECT用户名和密码,其中username ='test'AND password ='test'AND company_id =“从URL,子域中获取公司ID或名称”。因为现在是问题所在。如果我在数据库中有一个用户,在test1租户上的用户名是“ test”,则我不能在Tenant2上让用户名的用户是“ test”,因为不知道登录时要加载哪个用户/租户。使用子域时,可以使用另一个AND条件AND company_id = 1
这可能吗?
谢谢
答案 0 :(得分:0)
我认为您的问题不是针对Scout应用程序,而是与常规Java Authentication and Authorization(又称为 JAAS )有关。您可以在Scout应用程序中使用JAAS的所有基础功能。
Scout中的登录功能使用您在web.xml
中配置的标准Servlet过滤器。由于Servlet过滤器是通过HTTP请求调用的,因此您可以在自己的Servlet过滤器实现中提取子域,并使用该信息来构建具有所需SQL约束的SQL查询。
登录有效后,您可以使用子域和用户名作为主题,例如“ test1 /用户名”。在Scout中,主题在后端服务器的每个请求或服务调用中均可用。在那里,您可以从主题中提取子域,然后使用该信息来执行SQL查询。
Scout小部件应用程序包含一个有关如何使用servlet过滤器的示例。参见课程WidgetsUiServletFilter。