Record Class LoginAttemptKey

java.lang.Object
java.lang.Record
com.svenruppert.jsentinel.bruteforce.LoginAttemptKey
Record Components:
tenant - tenant scope; null becomes TenantId.DEFAULT
userId - username dimension; non-blank
ip - client-address dimension; non-blank

@ExperimentalJSentinelApi public record LoginAttemptKey(TenantId tenant, String userId, String ip) extends Record
Composite key under which LoginAttemptStore tracks failed-attempt counters and the last failure instant.

Both dimensions are recorded independently: userId catches an attacker hopping IPs against the same account, ip catches one cycling usernames from the same source. Brute-force policies typically consult both keys per attempt and back off as soon as either counter trips.

  • Constructor Details

    • LoginAttemptKey

      public LoginAttemptKey(TenantId tenant, String userId, String ip)
      Validates the record components and normalises a null tenant to TenantId.DEFAULT.
      Parameters:
      tenant - tenant scope; null becomes DEFAULT
      userId - non-blank username
      ip - non-blank client address
  • Method Details

    • toString

      public final String toString()
      Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.
      Specified by:
      toString in class Record
      Returns:
      a string representation of this object
    • hashCode

      public final int hashCode()
      Returns a hash code value for this object. The value is derived from the hash code of each of the record components.
      Specified by:
      hashCode in class Record
      Returns:
      a hash code value for this object
    • equals

      public final boolean equals(Object o)
      Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with Objects::equals(Object,Object).
      Specified by:
      equals in class Record
      Parameters:
      o - the object with which to compare
      Returns:
      true if this object is the same as the o argument; false otherwise.
    • tenant

      public TenantId tenant()
      Returns the value of the tenant record component.
      Returns:
      the value of the tenant record component
    • userId

      public String userId()
      Returns the value of the userId record component.
      Returns:
      the value of the userId record component
    • ip

      public String ip()
      Returns the value of the ip record component.
      Returns:
      the value of the ip record component