我在Spring Security中使用JDBC身份验证。我在MySQL数据库中有两个用户名密码对。
users
+----------+------------+---------+
| username | password | enabled |
+----------+------------+---------+
| murat | {noop}1a09 | 1 |
| test | {noop}123 | 1 |
+----------+------------+---------+
authorities
+----------+-----------+
| username | authority |
+----------+-----------+
| murat | USER |
+----------+-----------+
但只有第一对可以登录。第二个错误如下:
您的登录尝试未成功,请重试。
原因:糟糕的资历
我试着用谷歌浏览器登录。但没用。
以下是授权代码:
package com.example.contactsapp.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import javax.sql.DataSource;
@Configuration
@EnableWebSecurity
public class ContactsAppSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private DataSource securityDataSource;
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.jdbcAuthentication().dataSource(securityDataSource);
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/").authenticated()
.and()
.formLogin()
.and()
.logout()
.logoutUrl("/logout")
.logoutSuccessUrl("/logoutSuccessful");
}
}
更改功能
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.jdbcAuthentication().dataSource(securityDataSource);
}
到
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.jdbcAuthentication().dataSource(dataSource)
.usersByUsernameQuery(
"select username,password, enabled from users where username=?")
.authoritiesByUsernameQuery(
"select username, role from user_roles where username=?");
}
在检查复杂场景之前,请检查第二个用户的第一个密码。将其设置为像123
这样的简单密码,这样您就不会出错。如果它使用这个简单密码,这意味着问题与Spring有关。
如果它适用于123
,但不适用于您的原始密码,请检查您是否有任何不属于ASCII的字符,例如您使用了一些特殊字符,如â, Ç, Ğ, Ö, Ü
。如果您的密码中有这样的字符,那么问题可能是由您数据库的特定代码页引起的。要检查此问题,请写入控制台或记录您输入的密码(您想要检查的)和数据库中的密码。如果它们看起来不同,那么代码页就有问题。
请核实两件事:
1) 验证第二个用户是否具有与其关联的角色/权限。2) 删除第一个用户(这样数据库中只有一个用户)。查看安全性是否作为第二个用户通过。
如何初始化SDK并且让基本的用户名密码认证成功 通过阅读此文档,您可以完成用户密码登录认证,并成功启动VPN SDK 此文档默认已经集成SDK并且工程可以编译通过运行 您完全可以参考demo(特别是 AuthViewController.m)进行代码编写,但此文档仍然列出了必要的步骤 此文档只是参考,您应该根据具体需求因地适宜 此文档会略过如头文件import等基本概念与步骤,只介绍重要的概念 在
问题内容: 目前,我正在使用Spring Security编写Web应用程序。我们有一个通过用户名和密码对用户进行身份验证的Web服务。 网络服务: 如何配置Spring Security将提供的用户名和密码传递给Web服务? 我写了一个仅接收用户名的。 我认为问题出在您的xml中。您是否关闭了自动配置?并且您的类是否扩展AbstractUserDetailsAuthenticationProvi
问题内容: 我正在开发客户端/服务器身份验证程序,但是遇到了问题。客户端可以很好地与服务器建立连接,但是一旦我输入密码和用户名,它就不会返回有效的用户名/密码。如果用户使用正确的用户名/密码服务器登录,则应返回“ Welcome,username”,如果无效,则返回“登录失败”。我查看了printwriter和bufferedreader文档,以确保我使用正确的方法在服务器/客户端之间正确传递文本
); 我的状况是这样的 我的任务是将一个用户名与一个密码匹配,但我出错了 我正在使用array_column函数来匹配我条件。
我希望能够对客户机进行身份验证/授权,以产生/消费某些主题的消息。它们将是我们vpn的一部分(包括aws)。根据我对可用文档的理解,唯一的选择是颁发客户端证书并基于客户端DNS设置ACL?不幸的是,我不能使用我的私人CA(我在linux笔记本电脑上创建的)来创建客户端证书。于是出现了以下问题: null 请开导我:) 提前谢谢marcel
本文向大家介绍Springboot+SpringSecurity+JWT实现用户登录和权限认证示例,包括了Springboot+SpringSecurity+JWT实现用户登录和权限认证示例的使用技巧和注意事项,需要的朋友参考一下 如今,互联网项目对于安全的要求越来越严格,这就是对后端开发提出了更多的要求,目前比较成熟的几种大家比较熟悉的模式,像RBAC 基于角色权限的验证,shiro框架专门用于