java - Spring Security 和 DB 授权

标签 java mysql spring spring-security authorization

我登录时遇到问题。如果我的用户名和密码相同,则登录成功,但如果用户名和密码不同,则会出现错误原因:凭据错误

这是配置安全类中的配置方法:

protected void configure(AuthenticationManagerBuilder auth)
        throws Exception {
    auth
    .jdbcAuthentication()
    .dataSource(dataSource)
    .usersByUsernameQuery("select username,password, enabled from users where username=? ")
    .authoritiesByUsernameQuery("select u.username, r.name from users u, security_role r, users_security_role uhr where u.id_user = uhr.id and r.id = uhr.security_role_id and u.username =?");
}

我在数据库用户中有一个选项卡,其中包含用户名和密码。 如果我在数据库中插入用户,例如 "user","user""usernameandpasswordsame","usernameandpasswordsame" 一切正常,我可以登录并获得正确的 user_role,但是如果在数据库中插入用户名和密码不同的用户,例如 "user","userpass" ,我会出错。

这也是同一配置安全类中的另一个配置方法:

        protected void configure(HttpSecurity http) throws Exception {
         http.csrf().disable()
         .authorizeRequests()
            .expressionHandler(webExpressionHandler())
            .anyRequest().authenticated()
            .and()
         .formLogin()
            .and()
         .logout()
         .deleteCookies("remove")
            .invalidateHttpSession(true)
            .logoutUrl("/logout")
         .permitAll();
    }

有人可以告诉我出了什么问题吗?

最佳答案

发生这种情况的唯一情况是您将表单的用户名字段保存到密码列。尝试直接将您的用户名和密码插入表中。如果您使用 H2,请检查您的 SQL 文件。

关于java - Spring Security 和 DB 授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40730310/

相关文章:

java - 如何使 Java 通用方法静态?

java - java中的volatile变量和内存屏障

php - 无需用户执行即可重置 MySQL 字段值

java - 使用weka对我的sql中存在的数据进行测试过程和期望

jquery - Spring MVC 与 jquery 自动完成不返回结果

java - 从 Spring-Shell 中删除命令

Spring JPA : Locking parent row when inserting one to many child record

java - 打印 int 数组,最后一个元素之前为 "and"

java - 如何在 Maven 管理的框架中修补子组件?

mysql - 获取数据库中最新添加的记录