Я пытаюсь добавить простую аутентификацию в свой проект, используя AuthenticationManagerBuilder
, используя мою базу данных Oracle, и я использовал схему пользователя Spring из документов:
https://docs.spring.io/spring-security/site/docs/current/reference/html5/#user - схема
CREATE TABLE USERS (
USERNAME NVARCHAR2(128) PRIMARY KEY,
PASSWORD NVARCHAR2(128) NOT NULL,
ENABLED CHAR(1) CHECK (ENABLED IN ('Y','N') ) NOT NULL
);
CREATE TABLE AUTHORITIES (
USERNAME NVARCHAR2(128) NOT NULL,
AUTHORITY NVARCHAR2(128) NOT NULL
);
ALTER TABLE AUTHORITIES ADD CONSTRAINT AUTHORITIES_UNIQUE UNIQUE (USERNAME, AUTHORITY);
ALTER TABLE AUTHORITIES ADD CONSTRAINT AUTHORITIES_FK1 FOREIGN KEY (USERNAME) REFERENCES USERS (USERNAME) ENABLE;
и я настроил свой компонент источника данных, и он работает нормально, но все же моя страница входа не принимает имя пользователя и пароль, которые я установил в своей БД, и я потратил немало времени количество времени, которое я пытался решить.
Вот мой файл конфигурации безопасности:
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter
{
@Autowired
private DataSource myDataSource;
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception
{
auth.jdbcAuthentication()
.dataSource(myDataSource)
.usersByUsernameQuery("select username, password, enabled from users where username = ?")
.authoritiesByUsernameQuery("select username, authority from authorities where username = ?");
}
@Override
protected void configure(HttpSecurity http) throws Exception
{
http.authorizeRequests()
.anyRequest()
.authenticated()
.and()
.formLogin()
.loginPage("/showMyLoginPage")
.loginProcessingUrl("/authenticateTheUser")
.permitAll()
.and()
.logout()
.logoutSuccessUrl("/")
.logoutUrl("/logoutUser")
.and()
.csrf()
.disable();
}
И мои запросы на вставку:
INSERT INTO USERS VALUES ('test','test123', 'Y');
INSERT INTO AUTHORITIES VALUES ('test', 'ROLE_ADMIN');
Я что-то упустил?