我在BCrypt使用Spring安全性,但我在解决问题方面遇到了一些麻烦。
所以我的代码片段设置了passwordEncoder
@Autowired
public void configureAuthentication(AuthenticationManagerBuilder authenticationManagerBuilder) throws Exception {
authenticationManagerBuilder
.userDetailsService(this.userDetailsService)
.passwordEncoder(passwordEncoder());
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
在数据库中密码被正确保存为BCrypt,但是当我尝试验证时我收到了错误
Encoded password does not look like BCrypt
"status": 401,
"error": "Unauthorized",
"exception": "org.springframework.security.authentication.BadCredentialsException",
答案 0 :(得分:4)
我有同样的例外。在我的情况下,我手动将密码添加到数据库中,并且出现问题是因为我使用在哈希中使用BCryptPasswordEncoder
前缀的在线BCrypt生成器生成了它们 - 而Java $2a$
使用 string DatafromCOM;
double[] x = new double[100];
double[] y = new double[100];
int i;
PointPairList listPointsOne = new PointPairList();
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
try
{
while (serialPort1.BytesToRead > 0)
{
DatafromCOM = serialPort1.ReadLine();
double iData;
var ok = double.TryParse(txtKQ.Text, out iData);
if (DatafromCOM.Trim() != "" && ok)
{
i= (i + 1) % 100;
x[i] = i;
y[i] = iData;
listPointsOne.Add(i,iData);
}
}
}
catch { }
}
private void timer1_Tick(object sender, EventArgs e)
{
z1.GraphPane.CurveList.Clear();
z1.GraphPane.AddCurve(null, listPointsOne, Color.Red, SymbolType.None);
z1.AxisChange();
z1.Invalidate();
}
一。所以,我刚刚使用了另一台发电机。
答案 1 :(得分:0)
在bcrypt散列算法中,每次生成长度为60的不同散列值,例如
$ 2A $ 10 $ LOqePml / koRGsk2YAIOFI.1YNKZg7EsQ5BAIuYP1nWOyYRl21dlne
一个常见的错误,“密码”列(用户表)的长度小于60,例如,密码VARCHAR(45),并且某些数据库将自动截断数据。因此,您始终会收到警告“编码密码看起来不像BCrypt”。
要解决此问题,请确保“密码”列的长度至少为60。
参考:https://www.mkyong.com/spring-security/spring-security-encoded-password-does-not-look-like-bcrypt/