当前位置: 首页 > 知识库问答 >
问题:

spring安全编码密码看起来不像BCrypt

辛承志
2023-03-14

我无法使用正确的详细信息登录,因为程序不断声明编码的密码看起来不像bcrypt。有人知道怎么解决这个吗?我正在使用JDBC身份验证。

我也有正确的数据库表,有足够的空间用于编码密码。我不确定哪里出了问题。

JSP表单:

                <div class="form-group">
                    <div class="form-label-group">
                        <label for="inputUser">Username: </label> <input name="username"
                            type="text" path="username" id="inputUser" class="form-control"
                            placeholder="Username" required="required" autofocus="autofocus">
                    </div>
                </div>

                <div class="form-group">
                    <div class="form-label-group">
                        <label for="inputPassword">Password: </label> 
                        <input name="username" type="password" path="password"
                            id="inputPassword" class="form-control" placeholder="Password"
                            required="required">
                    </div>
                </div>

                <div class="form-group">
                    <div class="checkbox">
                        <label> <input type="checkbox" value="remember-me">
                            Remember Password
                        </label>
                    </div>
                </div>

                <input type="submit" value="Login"/>

            </form:form>

安全配置:

@Autowired
private DataSource securityDataSource;

@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
    auth.jdbcAuthentication().dataSource(securityDataSource).passwordEncoder(passwordEncoder());
}

@Override
protected void configure(HttpSecurity http) throws Exception {

    http.authorizeRequests().antMatchers("/management/**").authenticated().and().formLogin().loginPage("/login")
            .loginProcessingUrl("/processLogin").defaultSuccessUrl("/management/dashboard").permitAll();

    http.exceptionHandling().accessDeniedPage("/access-denied");

}

@Bean
@Autowired
public BCryptPasswordEncoder passwordEncoder() {
    return new BCryptPasswordEncoder();
}

登录控制器

@Controller
public class LoginController {

  @Autowired
  private UserServiceImpl userService;


  @GetMapping("/login")
  public String showLoginForm(Model model) {

    User user = new User();
    model.addAttribute("user", user);

    return "login";
  }

  @PostMapping("/processLogin")
  public String processLogin(@ModelAttribute("user") User user, Model model) {

    if (userService.findUser(user.getUsername(), user.getPassword()) != null) {
        return "/management/dashboard";
    } else {
        return "/access-denied";
    }
  }
}

我的数据库:这里

共有1个答案

甘永春
2023-03-14

查看数据库条目,您似乎使用了org.springframework.security.crypto.password.delegatingpasswordencoder一次,然后切换回org.springframework.security.crypto.bcryptpasswordencoder。只有DelegatingPasswordEncoder能够处理用不同方案编码的密码。

如果要坚持使用当前配置的BCryptPasswordEncoder,则需要

  1. 删除前缀{bcrypt}
  2. 使用BCryptPasswordEncoder
  3. JohnSusan的两个密码 test123进行编码
 类似资料:
  • 我最近遵循了Spring boot安全中的身份验证和授权教程,我想我在谈到sql时迷路了。尽管它没有显示任何错误,即使我输入了正确的用户名和密码,它仍然显示错误的凭据。这是我的代码: UserDetailsServiceImpl.java WebUserMapper.java WebSecurityConfig.java 这是我的数据库: 它返回以下错误: 密码是123。我不知道为什么它不工作,即

  • 我有一个spring boot 1.5.9授权服务器,它使用BCrypt存储密码。我正在尝试迁移到2.0,但是,我不再能够检索授权令牌。 服务器的响应是: 控制台输出以下内容:。 这部分应用程序以前工作得很好。我所做的唯一更改是build.gradle文件(更改、添加插件和添加。 中的密码哈希逻辑可在两个单独的配置文件中找到: 而且 OAuthUser类: 我知道spring的安全有很大的变化,但

  • 我正在使用OAuth2和JPA编写spring boot REST安全API。当访问访问令牌时,我会收到警告,因为编码密码看起来不像BCrypt。当我点击邮递员http://localhost:8080/oauth/token的URL时?grant_type=password&username=user&password=user i get 我已经定义了Bean和存储库。我已经使用了secret

  • 问题内容: 我正在尝试使用JWT实施spring AuthorizationServer。我能够生成JWT令牌并登录,直到将BCrypt添加到混合中为止。现在,当我尝试登录时,我从API获得“错误的凭据”。 OAuth2Configuration.java WebSecurityConfig.java SeedData.java 谢谢你的帮助。 问题答案: 我需要进行以下更改才能使其正常工作。如果

  • 即使输入了正确的电子邮件和密码,同样的错误也会一次又一次地出现。 更多参考请参见我的回复-https://github.com/ajitlol404/smartcontactmanager/tree/master/smartcontactmanager 控制台错误

  • 我正在使用spring boot,spring安全,OAuth2和JWT来验证我的应用程序,但我一直得到这个令人讨厌的错误,我不知道什么是错误的。我的类: : : 除: 我的实体模型类是: 实体: 实体: 我在数据库中的密码是正确加密的spring安全BCrypt,它的数据类型是varchar(255),大于60。