简体   繁体   English

在Grails域类上运行初始化函数

[英]Run initializing function on Grails domain class

I have an AuthToken domain model. 我有一个AuthToken域模型。 It accepts an token_string which is a JWT token. 它接受一个token_string,它是一个JWT令牌。

class AuthToken {
  String token_string
}

After initializing the AuthToken via new AuthToken(token_string: '...') , I would like to parse the token, and set properties on the class appropriately. 通过new AuthToken(token_string: '...')初始化AuthToken之后,我想解析令牌,并在类上适当地设置属性。 For example expiration should be set based on the token. 例如,应基于令牌设置到期时间。

If the token is invalid for whatever reason, I'd like to invalidate the AuthToken (ie token.validate() should be false). 如果令牌由于某种原因而无效,我想使AuthToken无效(即token.validate()应该为false)。

How can I accomplish this with Grails / GORM? 如何使用Grails / GORM完成此操作?

I recommend adding a static factory method to parse the token String and return a AuthToken . 我建议添加一个静态工厂方法来解析令牌String并返回AuthToken Since you're dealing with a domain class, I'd avoid adding the constructor AuthToken(String tokenString) because then the default Map -based constructor will be deleted. 由于您正在处理域类,因此我避免添加构造函数AuthToken(String tokenString)因为这样默认的基于Map的构造函数将被删除。 You probably do not want that (and neither does GORM). 您可能不希望这样做(GORM也不希望)。

class AuthToken {
  String token_string
  String someProperty

  static AuthToken parse(String token_string) {
      new AuthToken(token_string: token_string).with {
          someProperty = token_string.reverse() // an example

          return delegate
      }
  }
}

def token = AuthToken.parse(aTokenString)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM