grails应用程序中基于租户的唯一用户名

grails应用程序中基于租户的唯一用户名,grails,spring-security,constraints,Grails,Spring Security,Constraints,我正在开发一个应用程序,它有几个公司作为我们的客户,每个公司下有多个用户访问我们的应用程序 因此,我构建了用户表,将所有公司的用户保存在同一个表中,并将company_id作为一列- class User { String username String password static belongsTo = [company:Company] static constraints = { username blank: false

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

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

class User {
    String username
    String password

    static belongsTo = [company:Company]

    static constraints = {
        username blank: false
        password blank: false
    }
}
在这个应用程序中,我定制了spring安全性,以根据用户名、密码和comapany三个字段对用户进行身份验证。因此,如果公司Org1和Org2中有两个用户ABC,则会正确识别他们

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


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

您可以尝试使用多列约束,请参见

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

 username blank: false, unique: 'company'

谢谢,这很好也很简单:可能是