【问题标题】:Tenant based unique username in grails applicationgrails应用程序中基于租户的唯一用户名
【发布时间】:2015-04-12 22:33:03
【问题描述】:

我正在开发一个应用程序,该应用程序有几家公司作为我们的客户,每个公司下有多个用户访问我们的应用程序。

所以我构建了用户表,将所有公司的用户保存在同一个表中,并将 company_id 作为列-

class User {
    String username
    String password

    static belongsTo = [company:Company]

    static constraints = {
        username blank: false
        password blank: false
    }
}

在这个应用程序中,我自定义了 spring 安全性以基于 3 个字段对用户进行身份验证 - usernamepasswordcomapany。因此,如果 Org1 和 Org2 公司中有两个用户 ABC,他们将被正确识别。

现在,如果我在username 上应用unique: true 的约束,则该约束将应用于整个表,并且它不允许我保存两个用户ABC,无论他们是否在两个不同的公司。 (PS-我理解约束是基于表格的,请进一步阅读)。

现在的主要问题是我想让username 基于公司而不是基于用户表是唯一的。怎么做?是否存在可用于检查用户名是否存在于公司中的预定义约束?或者如果用户名已经存在于公司中,每次注册时都必须检查它?

【问题讨论】:

标签: grails spring-security constraints


【解决方案1】:

您可以尝试使用多列约束(请参阅http://www.grails.org/doc/latest/ref/Constraints/unique.html

您的用户名约束如下所示:

 username blank: false, unique: 'company'

【讨论】:

  • 谢谢,太好了,非常简单:)
猜你喜欢
  • 1970-01-01
  • 2020-08-01
  • 2020-11-01
  • 1970-01-01
  • 2021-06-14
  • 1970-01-01
  • 2013-06-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多