SpringBootSecurity中前后端分离的介绍以及简单登录的操作方法

什么是SpringBootSecurity中前后端分离

前后端分离开发模式是将前端和后端的开发分离开来,前端只负责页面呈现,后端只负责业务逻辑处理和数据返回。在Spring Boot 中使用 Spring Boot Security 来做认证和授权,可以很方便地实现前后端分离模式。

Spring Boot Security 中前后端分离的操作方法

在实现前后端分离模式之前,需要通过配置文件启用 Spring Boot Security:

  1. 在 pom.xml 文件中引入 spring-boot-starter-security 依赖。
  2. 在 application.properties 或 application.yml 文件中配置用户名和密码:
  3. spring.security.user.name=admin

    spring.security.user.password=admin

  4. 在 WebSecurityConfig 类中实现认证和授权逻辑:
  5. 继承 WebSecurityConfigurerAdapter 类,通过重写 configure() 方法来实现安全配置。

简单登录的操作方法

1. 在前端页面中编写登录表单:

  
<form method="post" action="/login">
  <input type="text" name="username" />
  <input type="password" name="password" />
  <input type="submit" value="登录" />
</form>
  

2. 在后端中配置登录接口:

  
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
            .antMatchers("/index.html", "/login.html", "/static/**").permitAll()
            .anyRequest().authenticated()
            .and()
            .formLogin()
            .loginPage("/login.html")
            .loginProcessingUrl("/login")
            .usernameParameter("username")
            .passwordParameter("password")
            .defaultSuccessURL("/main.html")
            .failureUrl("/login.html?error")
            .permitAll()
            .and()
            .logout()
            .logoutUrl("/logout")
            .logoutSuccessUrl("/login.html")
            .invalidateHttpSession(true)
            .deleteCookies("JSESSIONID")
            .permitAll()
            .and().csrf().disable();
    }
}
  

3. 在后端中编写登录逻辑:

  
@RestController
public class LoginController {

    @RequestMapping("/login")
    public void login(HttpServletRequest request, HttpServletResponse response) throws IOException {
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(username, password);
        Authentication authenticate = authenticationManager().authenticate(token);
        SecurityContextHolder.getContext().setAuthentication(authenticate);
        response.sendRedirect("/main.html");
    }

    @RequestMapping("/logout")
    public void logout(HttpServletRequest request, HttpServletResponse response) throws IOException {
        request.getSession().invalidate();
        response.sendRedirect("/login.html");
    }

}
  
© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享