Spring SecurityでJDBC認証を使用しています。MySQLデータベースに2つのユーザー名とパスワードのペアがあります。
users
+----------+------------+---------+
| username | password | enabled |
+----------+------------+---------+
| murat | {noop}1a09 | 1 |
| test | {noop}123 | 1 |
+----------+------------+---------+
authorities
+----------+-----------+
| username | authority |
+----------+-----------+
| murat | USER |
+----------+-----------+
しかし、最初のペアのみがログイン時に機能します。2番目のものは次のエラーを出します:
ログインに失敗しました。もう一度お試しください。
理由:資格情報が正しくありません
Google Chromeでログインしようとしました。しかし、うまくいきませんでした。
承認のコードは次のとおりです。
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");
}
}
次の2つを確認してください。
1)2番目のユーザーに役割/権限が関連付けられていることを確認します。2)最初のユーザーを削除します(DBに存在するユーザーは1人だけです)。セキュリティが2番目のユーザーとして通過しているかどうかを確認します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加