首页 > 编程语言 > 详细

springSecurity

时间:2021-05-24 23:15:43      阅读:41      评论:0      收藏:0      [点我收藏+]

 

  • 添加依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
  • 创建配置类,继承WebSecurityConfigurerAdapter类,加上注解EnableWebSercurity


@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/").permitAll()
.antMatchers("/level1/**").hasRole("vip1")
.antMatchers("/level2/**").hasRole("vip2")
.antMatchers("/level3/**").hasRole("vip3");

//关闭防止网站攻击工具
http.csrf().disable();

/*//开启框架默认的登陆、登出页面
http.formLogin().defaultSuccessUrl("/main.html");*/
//定制自己的登陆页面,
/*loginPage()与loginProcessingUrl()的含义
1.以loginPage中自定义的页面,loginProcessingUrl()里面的数据,指登陆认证的页面。
* */
http.formLogin().loginPage("/login").usernameParameter("username").passwordParameter("password").defaultSuccessUrl("/main.html").loginProcessingUrl("/tologin");
http.logout().logoutSuccessUrl("/login.html");

//安全框架登陆页面的记住我功能,默认保存两周
http.rememberMe().rememberMeParameter("remember");
}

@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder())
.withUser("root").password(new BCryptPasswordEncoder().encode("123")).roles("vip1","vip2","vip3")
.and()
.withUser("guest").password(new BCryptPasswordEncoder().encode("123")).roles("vip1")
.and()
.withUser("kuang").password(new BCryptPasswordEncoder().encode("123")).roles("vip2","vip1");
}
}
 

 

  • 重写configure(http请求认证)方法,内容包括认证请求的权限认定,认证登陆页面的自定义,请求参数的username和password参数配置,登出成功返回页面。

    • 其中loginPage与loginProcessingUrl方法的区别:loginPage为自定义的登陆页面,loginProcessingUrl为发起请求地址的前缀(例如,form表单是以toLogin发起请求,那么loginProcessingUrl(“/toLogin”))

  @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                .antMatchers("/").permitAll()
                .antMatchers("/level1/**").hasRole("vip1")
                .antMatchers("/level2/**").hasRole("vip2")
                .antMatchers("/level3/**").hasRole("vip3");

        //关闭防止网站攻击工具
        http.csrf().disable();

        /*//开启框架默认的登陆、登出页面
        http.formLogin().defaultSuccessUrl("/main.html");*/
        //定制自己的登陆页面,
        /*loginPage()与loginProcessingUrl()的含义
            1.以loginPage中自定义的页面,loginProcessingUrl()里面的数据,指登陆认证的页面。
        * */
        http.formLogin().loginPage("/login").usernameParameter("username").passwordParameter("password").defaultSuccessUrl("/main.html").loginProcessingUrl("/tologin");
        http.logout().logoutSuccessUrl("/login.html");

        //安全框架登陆页面的记住我功能,默认保存两周
        http.rememberMe().rememberMeParameter("remember");
    }

 

  • 重写configure(授权认证)方法,内容包括添加用户、密码、角色(权限)信息。

  @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder())
                .withUser("root").password(new BCryptPasswordEncoder().encode("123")).roles("vip1","vip2","vip3")
                .and()
                .withUser("guest").password(new BCryptPasswordEncoder().encode("123")).roles("vip1")
                .and()
                .withUser("kuang").password(new BCryptPasswordEncoder().encode("123")).roles("vip2","vip1");
    }

 

springSecurity

原文:https://www.cnblogs.com/youisme/p/14806197.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!