美文网首页spring 整合使用springsecurityspringboot
spring-security在spring boot里的使用

spring-security在spring boot里的使用

作者: 墨宇暗黑 | 来源:发表于2021-12-04 10:59 被阅读0次

    1.首先需要添加依赖

    <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    

    2.创建一个自己的安全类继承WebSecurityConfigurerAdapter,代码如下所示

    ,antMatchers("/").permitAll()表示根路径不需要任何权限,.antMatchers("/success").hasRole("vip1")需要VIP1的这种权限.withUser("admin").password(new BCryptPasswordEncoder().encode("123456")).roles("vip1")表示该用户登录具有的权限为VIP1,.formLogin()表示当你进入某个你没有权限的页面的时候跳转到登录页面,springsecurity自带了登录页面和登录功能,所以需要自定义登录页面采用.loginPage("/index.html"),自定义登录接口采用.loginProcessingUrl("/login"),

    @EnableWebSecurity
    public class SecurityConfig extends WebSecurityConfigurerAdapter {
        protected void configure(HttpSecurity http) throws Exception {
            http.authorizeRequests().antMatchers("/").permitAll()
                    .antMatchers("/success").hasRole("vip1");
            http.formLogin().loginPage("/index.html").loginProcessingUrl("/login").successForwardUrl("/success");
        }
        protected void configure(AuthenticationManagerBuilder auth) throws Exception {
            auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder())
                    .withUser("admin").password(new BCryptPasswordEncoder().encode("123456")).roles("vip1")
                    .and()
                    .withUser("root").password(new BCryptPasswordEncoder().encode("123456")).roles("vip1","vip2");
        }
    }
    

    3.编写自己的登录页面,这里只需要自己稍加修改一下,

    <!DOCTYPE html>
    <html lang="en" xmlns:th="http://www.thymleaf.org">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <form th:action="@{/login}" method="post">
        <h1 th:text="#{username}"></h1>
        <input type="text" name="username" th:placeholder="#{username}" value="admin"/>
        <input type="text" name="password" th:placeholder="#{password}" value="123456"/>
        <button>[[#{submit}]]</button>
        <br>
        <a th:href="@{/index.html(l='zh_CN')}">中文</a>
        <br>
        <a th:href="@{/index.html(l='en_US')}">english</a>
    </form>
    </body>
    </html>
    

    4.编写自己的登录接口和登录成功的接口

    @RequestMapping("/login")
    public String login(String username,String password){
        return "redirect:success";
    }
    @RequestMapping("/success")
    public String success(){
        return "success";
    }
    

    5.说一下我遇到的问题

    如果自定义登录页面一定需要设置name="username" 和name ="password",我由于忘记添加,让我找了几个小时,

    相关文章

      网友评论

        本文标题:spring-security在spring boot里的使用

        本文链接:https://www.haomeiwen.com/subject/ixmmxrtx.html