Как я могу отключить thymleaf и использовать пользовательский логин? - PullRequest
0 голосов
/ 07 марта 2020

0. Описание

я не надеюсь, thymleaf.

Я пытался.

Я исследовал, как реализовать пользовательскую страницу входа, используя только расширение "html".

Но результат был не очень хорошим.

Любой использовал аннотацию @Controller.

Я не использую TemplateEngine с thymleaf, поэтому при использовании @Controller я получаю ошибку ViewResolver.

Итак, я хочу найти решение для реализации пользовательской страницы входа в систему, используя только html только страницы.

1. Исходный каталог

  • ресурсы
    • статические
      • ошибка
        • 403. html
        • 404. html
        • 405. html
      • js
        • образец. js
      • безопасность
        • логин. html
      • 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;
    }

}
...