如何在Spring Security中通过jdbc身份验证使用自定义登录页面

时间:2019-10-28 07:23:33

标签: spring-boot jsp spring-security

当我收到获取请求时,无法打开我的自定义登录页面。我配置了HttpSecurity,但是它显示的是“ login”的字符串而不是login.jsp。

我在application.properties中添加了以下代码,并在pom.xml文件中添加了jsp依赖关系。但是无论如何它都无法正常工作。

spring.mvc.view.prefix: /WEB-INF/jsp/
spring.mvc.view.suffix: .jsp

SecurityConfig.java

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    private DataSource dataSource;

    @Bean
    @ConfigurationProperties("spring.datasource")
    public DataSource ds(){
        return DataSourceBuilder.create().build();
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception{
            http.authorizeRequests()
                    .antMatchers("/resources/**").permitAll()
                .anyRequest().authenticated()
                .and()
            .formLogin()
                .loginPage("/login")
                .permitAll();
    }

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception{
        auth.jdbcAuthentication().dataSource(dataSource)
                .authoritiesByUsernameQuery("select username, role from myusers where username = ?")
                .usersByUsernameQuery("select username, password, 1 as enabled from myusers where username = ?");
    }

    @Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setViewClass(JstlView.class);
        viewResolver.setPrefix("/WEB-INF/jsp/");
        viewResolver.setSuffix(".jsp");
        return viewResolver;
    }

}

MainController.java

@RestController
public class MainController {


    @GetMapping("/login")
    public String login() {
        return "login";
    }

    @RequestMapping("/list_users")
    public String showUsers(){
        return "This is the list of users";
    }

    @RequestMapping("addUser")
    public String addUser(){

        return "User is added successfully";
    }

}



login.jsp

<h1><center>Give your login details</center></h1>
<form method="post" action="check_password">
    User name:<input type="text" name="username"><br>
    Password:<input type="password" name="password"><br>
    Submit <input type="submit" value="Submit">
</form>


我要打开我的Custom login.jsp页面而不是String。欢迎任何建议!

1 个答案:

答案 0 :(得分:0)

您可以了解@RestController的含义