SpringBoot整合Spring Security

这篇文章组合方式和shiro那一篇很接近,照葫芦画瓢


<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.
                //使用内存中的 InMemoryUserDetailManager
                inMemoryAuthentication()
                //不使用PassEncoder密码编码器
                .passwordEncoder(NoOpPasswordEncoder.getInstance())
                //配置admin用户
                .withUser("admin").password("admin").roles("ADMIN")
                //配置normal用户
                .and().withUser("normal").password("normal").roles("NORMAL");
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.
                //配置请求地址的权限
                authorizeRequests()
                    .antMatchers("/test/echo").permitAll() //所有用户可访问
                    .antMatchers("/test/admin").hasRole("ADMIN") //需要ADMIN角色
                //access后面跟上SringEL表达式,true可以访问
                    .antMatchers("/test/normal").access("hasRole('ROLE_NORMAL')") //需要NORMAL角色
                    .anyRequest().authenticated() //任何请求,访问的用户都需要验证
                .and()
                //设置Form表单登陆
                .formLogin()
//                        .loginPage("/login") //登陆URL地址
                    .permitAll() //所有用户可访问
                .and()
                //配置退出相关
                .logout()
//                        .logoutUrl("/logout") //退出URL地址
                    .permitAll(); //所有用户可访问
    }
}

核心配置类,下面补充带注解的方式的controller

@RestController
@RequestMapping("/demo")
public class DemoController {

    @PermitAll
    @GetMapping("/echo")
    public String demo() {
        return "实例返回";
    }


    @GetMapping("/home")
    public String home() {
        return "我是首页";
    }

    @PreAuthorize("hasRole('ROlE_ADMIN')")
    @GetMapping("/admin")
    public String admin() {
        return "我是管理员";
    }

    @PreAuthorize("hasRole('ROLE_NORMAL')")
    @GetMapping("/normal")
    public String normal() {
        return "我是普通用户";
    }
}

 

发布了30 篇原创文章 · 获赞 0 · 访问量 480
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览