下面的代码是使用Spring Boot Security的Spring BootLogin配置。第一
==application.properties
spring.datasource.driver-class-name = com.mysql.cj.jdbc.Driver
spring.datasource.url = jdbc:mysql://localhost/test?characterEncoding=utf8&serverTimezone=Asia/Seoul
spring.datasource.username = root
spring.datasource.password = password
spring.queries.users-query = SELECT username, password FROM blog_user WHERE username=?
spring.queries.roles-query = SELECT username, role FROM blog_user WHERE username=?
== Spring Security配置
@Value("${spring.queries.users-query}")
private String usersQuery;
@Value("${spring.queries.roles-query}")
private String rolesQuery;
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
// TODO Auto-generated method stub
auth.jdbcAuthentication().usersByUsernameQuery(usersQuery).authoritiesByUsernameQuery(rolesQuery)
.dataSource(dataSource).passwordEncoder(passwordEncoder());
}
@Override
protected void configure(HttpSecurity http) throws Exception {
// TODO Auto-generated method stub
http.csrf().disable()
.authorizeRequests()
.antMatchers("/" ,"/home*", "/js/**", "/css/**", "/icon/**", "/users/login", "/users/register").permitAll()
.antMatchers("/users*", "/posts/**").hasAnyRole("USER")
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/users/login").defaultSuccessUrl("/")
.usernameParameter("username").passwordParameter("password")
.and()
.logout()
.invalidateHttpSession(true)
.clearAuthentication(true)
.logoutSuccessUrl("/").and()
.exceptionHandling().accessDeniedPage("/error/403");
}
但登录行抛出以下异常。
Caused by: java.sql.SQLException: Column Index out of range, 3 > 2.
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129) ~[mysql-connector-java-8.0.15.jar:8.0.15]
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) ~[mysql-connector-java-8.0.15.jar:8.0.15]
我知道这个异常是从sql PreparedStatementCallback方法抛出的。但是恐怕我不知道< code > spring . queris . users-query 语句与Spring Security部分的关系,所以我可以修复这个preparedstatement参数。我是初学春安的。
问题是,SQL 查询在 3 个不同的列中搜索 3 个值,而在所选表中仅找到 2 列。来自 application.properties
文件的查询是唯一的查询?
我想这对你也有帮助。
也许您可以在这里打印整个stacktrac,并打印sql语句以及USERS和ROLES表的结构。
我正在使用spring 4,我想使用spring security 3来控制我的登录表单。因此,我在数据库中有以下表格: 用户表 : 角色表: 和users_roles 我的spring-security配置文件包含以下几行: 当我尝试连接时,我有以下错误: 你能告诉我我的配置有什么问题吗? 谢谢你
问题内容: 我决定通过添加身份验证使用和数据库来修改我的应用程序。在使用XML 和XML 进行普通身份验证之前。工作正常。 我看起来像这样 但是当我尝试进行身份验证时,我遇到了异常 XML文件中的语法有什么问题? 问题答案: Spring Security希望用户查询按顺序列出三列: 用户名 密码 启用(布尔值) 你没有最后一个。如果您的数据库中没有等效的“启用”功能,则可以使用常量。
问题内容: 我正在使用spring 4,并且想使用spring security 3来控制我的登录表单。所以我在数据库中有以下表格: 用户表: 角色表: 和 users_roles 我的 spring-security配置 文件具有以下几行: 当我尝试连接时,出现以下错误: 您能告诉我我的配置有什么问题吗? 谢谢 问题答案: 在和混合起来。将第一个SQL查询移至第二个,反之亦然。 也许您也想更改为
在com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:191)在com.microsoft.sqlserver.jdbc.SQLServerPrearedStatement.setterGetParam(SQLServerPrearedStatement.java:9
我有一个bean,我用它作为传输对象。bean的类定义为- 我正在使用这个bean,在带有Model属性注释的Spring控制器中。对于JSP,我有JSTL。我已经用这样的字段填充了JSP。 当我提交表单时,我得到Java . lang . indexoutofboundsexception:Index:0,Size: 0。
问题内容: 我在读取CSV文件时遇到此错误(无标题,3列,第二和第三字符串): 这是下面代码的一部分。坚持起来简直是愚蠢的简单事情,但是对于如何工作我只是空白。我是编码的新手,但是之前已经处理过csv模块,并且从来没有遇到过这方面的问题,只是在记事本中制作了一些测试csv文件,以查看是否可以从相同的代码中读取它,并且可以。我不知道。 问题答案: 尝试检查空白行。另外,请避免将其用作变量名。是打开的