Spring Security示例卡在登录

时间:2019-04-03 12:45:02

标签: spring spring-boot spring-mvc spring-security

我最近通过本教程设置了Spring Security:

https://spring.io/guides/gs/securing-web/

当我尝试登录时,只需将我重定向到登录页面即可,没有错误。 我可以正常访问主页。当我尝试访问受保护的资源时,它要求我登录。但是登录页面会将我重定向到登录页面。 它根本无法认证我。

我的Intellijide告诉我"${param.error}"无法重新保存,并且 从未使用过xmlns:sec = "http://www.thymeleaf.org/thymeleaf-extras-springsecurity3"。这些位于login.html中。

编辑:出于好奇,我尝试使用其他浏览器。登录可以在Firefox,IE等环境下正常运行。这可能意味着它不是编程错误。有谁知道使用铬时会导致这种情况的原因吗?它还适用于我的Chrome浏览器中的隐身标签。

以下是其余文件:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class HelloApplication {

    public static void main(String[] args) {
        SpringApplication.run(HelloApplication.class, args);
    }

}
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class MvcConfig implements WebMvcConfigurer {

    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/home").setViewName("home");
        registry.addViewController("/").setViewName("home");
        registry.addViewController("/hello").setViewName("hello");
        registry.addViewController("/login").setViewName("login");
    }

}
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.provisioning.InMemoryUserDetailsManager;

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .authorizeRequests()
                    .antMatchers("/", "/home").permitAll()
                    .anyRequest().authenticated()
                    .and()
                .formLogin()
                    .loginPage("/login")
                    .permitAll()
                    .and()
                .logout()
                    .permitAll();
    }

    @Bean
    @Override
    public UserDetailsService userDetailsService() {
        UserDetails user =
                User.withDefaultPasswordEncoder()
                        .username("user")
                        .password("password")
                        .roles("USER")
                        .build();

        return new InMemoryUserDetailsManager(user);
    }
}
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"
      xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
<head>
    <title>Hello World!</title>
</head>
<body>
<h1 th:inline="text">Hello [[${#httpServletRequest.remoteUser}]]!</h1>
<form th:action="@{/logout}" method="post">
    <input type="submit" value="Sign Out"/>
</form>
</body>
</html>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
<head>
    <title>Spring Security Example</title>
</head>
<body>
<h1>Welcome!</h1>

<p>Click <a th:href="@{/hello}">here</a> to see a greeting.</p>
</body>
</html>
<!DOCTYPE html>
<html xmlns = "http://www.w3.org/1999/xhtml" xmlns:th = "http://www.thymeleaf.org"
      xmlns:sec = "http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">

<head>
    <title>Spring Security Example </title>
</head>
<body>
<div th:if = "${param.error}">
    Invalid username and password.
</div>
<div th:if = "${param.logout}">
    You have been logged out.
</div>

<form th:action = "@{/login}" method = "post">
    <div>
        <label> User Name : <input type = "text" name = "username"/> </label>
    </div>
    <div>
        <label> Password: <input type = "password" name = "password"/> </label>
    </div>
    <div>
        <input type = "submit" value = "Sign In"/>
    </div>
</form>

</body>
</html>

0 个答案:

没有答案