首页 > 其他分享 >使用Spring Security对接口实现访问权限

使用Spring Security对接口实现访问权限

时间:2022-11-25 21:11:23浏览次数:63  
标签:Spring 对接口 BasicAuth springframework api org import Security security

 

1         <!-- 加入security依赖 -->
2         <dependency>
3             <groupId>org.springframework.boot</groupId>
4             <artifactId>spring-boot-starter-security</artifactId>
5         </dependency>

 

 1 package com.example.demo.api.rest.api.config;
 2 
 3 import org.springframework.context.annotation.Bean;
 4 import org.springframework.context.annotation.Configuration;
 5 import org.springframework.security.config.annotation.web.builders.HttpSecurity;
 6 import org.springframework.security.core.userdetails.User;
 7 import org.springframework.security.core.userdetails.UserDetailsService;
 8 import org.springframework.security.crypto.factory.PasswordEncoderFactories;
 9 import org.springframework.security.provisioning.InMemoryUserDetailsManager;
10 import org.springframework.security.web.SecurityFilterChain;
11 
12 @Configuration
13 @SuppressWarnings("all")
14 public class WebSecurityConfig {
15 
16     private final static String ACCOUNT_CLIENT_AUTHORITY = "admin";
17 
18     //配置BASIC Auth账号密码
19     @Bean
20     UserDetailsService userDetailsService() {
21         InMemoryUserDetailsManager users = new InMemoryUserDetailsManager();
22         users.createUser(User.withUsername("aaa")
23                 .password(PasswordEncoderFactories.createDelegatingPasswordEncoder().encode("bbb"))
24                 .authorities(ACCOUNT_CLIENT_AUTHORITY).build());
25         return users;
26     }
27 
28     /**
29      * 配置不同接口访问权限
30      *
31      * @param http
32      * @return
33      * @throws Exception
34      * @ 备注:.authorizeRequests().antMatchers("/api/BasicAuth_no").permitAll() 允许访问/api/BasicAuth_no
35      */
36     @Bean
37     SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
38         return http
39                 .authorizeRequests().antMatchers("/api/BasicAuth-no").permitAll()
40                 .antMatchers("/**").hasAuthority(ACCOUNT_CLIENT_AUTHORITY).anyRequest().authenticated()
41                 .and()
42                 .httpBasic()
43                 .and()
44                 .csrf()
45                 .disable()
46                 .build();
47     }
48 }

然后写两个接口

 1 package com.example.demo.api.rest.api.controller;
 2 
 3 import org.springframework.web.bind.annotation.RequestBody;
 4 import org.springframework.web.bind.annotation.RequestMapping;
 5 import org.springframework.web.bind.annotation.RestController;
 6 
 7 @RestController
 8 @SuppressWarnings("all")
 9 @RequestMapping("api")
10 public class ApiController {
11 
12     /**
13      * http://localhost:8080/api/testBasicAuth-no
14      * @param body
15      * @return
16      */
17     @RequestMapping("BasicAuth-no")
18     public String BasicAuth_no(@RequestBody String body){
19         System.out.println(body);
20         return "不需要访问权限";
21     }
22 
23     @RequestMapping("BasicAuth-yes")
24     public String BasicAuth_yes(@RequestBody String body){
25         System.out.println(body);
26         return "需要访问权限";
27     }
28 }

测试1,访问:BasicAuth-no(不需要访问权限)

 

 

测试2,访问:BasicAuth-yes(需要访问权限)

一、没有使用账号密码,提示401

 

 二、使用账号密码,访问通过

 

标签:Spring,对接口,BasicAuth,springframework,api,org,import,Security,security
From: https://www.cnblogs.com/lwl80/p/16926356.html

相关文章

  • 基于springboot财务管理系统设计与实现的源码+文档
     摘要随着信息化时代的到来,管理系统都趋向于智能化、系统化,车辆充电桩管理系统也不例外,但目前国内仍都使用人工管理,市场规模越来越大,同时信息量也越来越庞大,人工管理显然......
  • SpringMVC
    SpringMVC的基本流程:浏览器发送请求,如请求地址符合前端控制器的url-pattern,该请求就会被前端控制器DispatcherServlet进行处理,前端控制器会读取SpringMVC的核心配置文件,......
  • Spring5
    Spring51、Spring框架概述:1、Spring是一个轻量级的开源的javaEE框架轻量级:内存耗费比较小,jar包需求比较少开源:免费试用框架:让开发更加方便,代码更加简洁 2、spr......
  • 【五期邵润东】arXiv(22) No free lunch theorem for security and utility in federa
    XiaojinZhang,HanlinGu,LixinFan,KaiChen,andQiangYang.2022.Nofreelunchtheoremforsecurityandutilityinfederatedlearning.1,1(September20......
  • SpringMVC组件
    SpringMVC的相关组件前端控制器:DispatcherServlet处理器映射器:HandlerMapping处理器适配器:HandlerAdapter处理器:Handler视图解析器:ViewResolver......
  • SpringCloud Day1 SpringCloud概述
    SpringCloud概述。 Eureka:(服务注册发现)配置文件参数:register-with-eureka:false#false表示不向注册中心注册自己。fetch-registry:false#false表示自己端就是......
  • springboot接收前端传参的几种方式
    1、通过HttpServletRequest接收,常用于获取请求头参数以及Cookie,适用于GET和POST请求方式,以下两种方式:@GetMapping("/demo1")publicvoiddemo1(@RequestHeader(name=......
  • SpringDataJpa源码理解
    SpringDataJpa源码理解上一篇讲解了SpringDataJpa的基本使用,下面简单说一下源码我们以其中的一个test为案例进行分析: 我们可以发现resumeDao它是一个代理对象,类型是Si......
  • SpringCloud Alibaba(一) - Nacos 服务注册与发现,OpenFeign远程调用
    1、基础项目过目介绍1.1数据库创建1.2项目模块分布1.3测试http接口调用1.3.1http接口调用配置类//http接口调用配置类@ConfigurationpublicclassRestTempla......
  • SpringBoot原理深入及源码剖析
    1依赖管理问题:(1)为什么导入dependency时不需要指定版本?在SpringBoot入门程序中,项目pom.xml文件有两个核心依赖,分别是spring-boot-starter-parent和spring-boot-starter-w......