Spring Security--自定义登录页面

   自定义登录页面

      虽然 Spring Security 给我们提供了登录页面,但是对于实际项目 中,大多喜欢使用自己的登录页面。所以 Spring Security 中不仅仅提供了登录页面,还支持用户自定义登录页面。实现过程也比较简单, 只需要修改配置类即可。

      1 编写登录页面

      编写登录页面


<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Titletitle>
head>
<body>
<form action="/login" method="post"> 
    用户名:<input type="text" name="username"><br>
    密码"<input type="text" name="password"><br>
    <input type="submit" value="提交">
form>
body>
html>

       2 编写配置类

      配置类需要继承 WebSecurityConfigurerAdapte,并重写 configure 方法。

  • successForwardUrl()登录成功后跳转地址
  • loginPage() 登录页面
  • loginProcessingUrl 登录页面表单提交地址,此地址可以不真实存在。
  • antMatchers():匹配内容 permitAll():允许
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {

        //认证:表单认证
        http.formLogin()
                .loginPage("/login.html")     // 认证页面
                .loginProcessingUrl("/login")  //当访问这个url的时候 需要调用 MyloginServerImpl的loadUserByUsername
                .successForwardUrl("/main");   //成功后跳往什么页面 这里为post请求,main.html 这种get请求会报错

        //授权:权限控制
        http.authorizeRequests()
                .antMatchers("/login.html").permitAll() // login.html 这个请求不需要认证
                .anyRequest().authenticated(); // 所有的请求都必须被认证

        //关闭 csrf 防护(类似于防火墙)
        http.csrf().disable();
    }
}

      3 编写控制器

      当用户登录成功后跳转 main控制器。编写完成控制器后编写 main.html。页面中随意写上一句话表示 main.html 页面内容即可。

@Controller
public class LoginController{
    @RequestMapping("/main")
    public String main(){
        return "redirect:/main.html";
    }
}

测试:

输入地址:ip:port/login.html
输入正确账号 shouhe
密码: 123456

Spring Security--自定义登录页面_第1张图片

你可能感兴趣的:(SpringSecurity,demo,Java,java,spring,安全)