0. Описание
я не надеюсь, thymleaf.
Я пытался.
Я исследовал, как реализовать пользовательскую страницу входа, используя только расширение "html".
Но результат был не очень хорошим.
Любой использовал аннотацию @Controller.
Я не использую TemplateEngine с thymleaf, поэтому при использовании @Controller я получаю ошибку ViewResolver.
Итак, я хочу найти решение для реализации пользовательской страницы входа в систему, используя только html только страницы.
1. Исходный каталог
- ресурсы
- статические
- ошибка
- 403. html
- 404. html
- 405. html
- js
- безопасность
- index. html
# Источник: индекс. html
<h1>Static</h1>
# Источник: безопасность / логин. html
<!DOCTYPE html>
<html xmlns:th="http://www.typeleaf.org">
<head>
<title>LoginPage</title>
</head>
<body>
<div>
<h1>Login</h1>
<form action="/login" method="post">
<h2>Custom login form</h2>
<input type="text" name="username" placeholder="account ID"
required="required" />
<input type="password" name="password" placeholder="password"
required="required" />
<input type="submit" value="Login" />
</form>
</div>
</body>
</html>
Источник: SpringSecurityConfig. java
package kr.co.sanho.config;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
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 org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.factory.PasswordEncoderFactories;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.provisioning.InMemoryUserDetailsManager;
import kr.co.sanho.database.entity.Member;
import kr.co.sanho.database.repository.MemberRepository;
@Configuration
@EnableWebSecurity
public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private MemberRepository memberRepository;
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/hello", "/security/**", "/user/login").permitAll()
.antMatchers( "/**" ).hasRole( "USER" )
.anyRequest().authenticated()
.and()
.formLogin().loginPage( "/security/login.html" ).loginProcessingUrl("/user/login").usernameParameter( "username" ).passwordParameter( "password" )
.and()
.logout().logoutSuccessUrl( "/security/login.html" );
}
@Bean
public UserDetailsService userDetailsService() {
InMemoryUserDetailsManager userDetail = new InMemoryUserDetailsManager();
List<Member> members = memberRepository.findAll();
PasswordEncoder encoder = PasswordEncoderFactories.createDelegatingPasswordEncoder();
final User.UserBuilder userBuilder = User.builder().passwordEncoder(encoder::encode);
for(Member member : members) {
UserDetails user = userBuilder
.username(member.getId())
.password(member.getPw())
.roles("USER")
.build();
userDetail.createUser( user );
}
return userDetail;
}
}