在自定义Spring安全性userdetails实现中覆盖hashCode()和equals()

时间:2014-07-06 14:34:14

标签: java spring-security

我尝试覆盖自定义Spring安全hashCode中的equalsuserDetails方法,以限制应用程序中的并发会话。根据我的研究,如果你有一个自定义UserDetailsService实现,你必须覆盖这些方法,以便并发策略工作。我试过这个,但似乎没有用。实现这个的正确方法是什么?

@Override
public boolean equals(Object otherUser) {

    ProcnetUserDetails other = (ProcnetUserDetails) otherUser;

   if (other.getUsername().hashCode() == hashCode()){
       return true;
   }
   return false;
}

@Override
public int hashCode() {

    return this.systemUser.getUsername().hashCode() ;


}

1 个答案:

答案 0 :(得分:2)

更改您的等于方法以比较userNames,而不是他们的hashCodes

   return getUserName().equals(other.getUserName()));

不等的对象可以具有相同的hashCode,因此您当前的实现肯定是错误的。

话虽如此,你还没有提出问题