当前位置: 首页 > wzjs >正文

酒类网站如何做深圳做分销网站设计

酒类网站如何做,深圳做分销网站设计,网站建设难吗,网站上传后没有后台使用Spring Boot与Spring Security构建安全的RESTful API 引言 在现代Web应用开发中,安全性是不可忽视的重要环节。Spring Boot和Spring Security作为Java生态中的主流框架,为开发者提供了强大的工具来构建安全的RESTful API。本文将详细介绍如何结合S…

使用Spring Boot与Spring Security构建安全的RESTful API

引言

在现代Web应用开发中,安全性是不可忽视的重要环节。Spring Boot和Spring Security作为Java生态中的主流框架,为开发者提供了强大的工具来构建安全的RESTful API。本文将详细介绍如何结合Spring Boot和Spring Security,并利用JWT(JSON Web Token)实现身份验证与授权。

技术栈

  • 核心框架: Spring Boot, Spring Security
  • 身份验证: JWT
  • 数据库: H2 (示例)
  • 构建工具: Maven

项目初始化

首先,使用Spring Initializr创建一个新的Spring Boot项目,添加以下依赖:

  • Spring Web
  • Spring Security
  • H2 Database (用于示例)
  • JWT库 (如jjwt)
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency><dependency><groupId>com.h2database</groupId><artifactId>h2</artifactId><scope>runtime</scope></dependency><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-api</artifactId><version>0.11.5</version></dependency><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-impl</artifactId><version>0.11.5</version><scope>runtime</scope></dependency><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-jackson</artifactId><version>0.11.5</version><scope>runtime</scope></dependency>
</dependencies>

配置Spring Security

Spring Security默认会为所有端点启用基本认证。我们需要自定义配置以实现JWT认证。

  1. 创建一个配置类SecurityConfig
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(HttpSecurity http) throws Exception {http.csrf().disable().authorizeRequests().antMatchers("/api/auth/**").permitAll().anyRequest().authenticated().and().sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);http.addFilterBefore(jwtAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class);}@Beanpublic JwtAuthenticationFilter jwtAuthenticationFilter() {return new JwtAuthenticationFilter();}
}
  1. 实现JWT生成与验证的逻辑:
@Component
public class JwtTokenProvider {@Value("${jwt.secret}")private String jwtSecret;@Value("${jwt.expiration}")private int jwtExpirationInMs;public String generateToken(Authentication authentication) {UserPrincipal userPrincipal = (UserPrincipal) authentication.getPrincipal();Date now = new Date();Date expiryDate = new Date(now.getTime() + jwtExpirationInMs);return Jwts.builder().setSubject(Long.toString(userPrincipal.getId())).setIssuedAt(new Date()).setExpiration(expiryDate).signWith(SignatureAlgorithm.HS512, jwtSecret).compact();}public Long getUserIdFromJWT(String token) {Claims claims = Jwts.parser().setSigningKey(jwtSecret).parseClaimsJws(token).getBody();return Long.parseLong(claims.getSubject());}public boolean validateToken(String authToken) {try {Jwts.parser().setSigningKey(jwtSecret).parseClaimsJws(authToken);return true;} catch (Exception ex) {// Log error}return false;}
}

实现认证与授权

  1. 创建用户服务类CustomUserDetailsService
@Service
public class CustomUserDetailsService implements UserDetailsService {@Autowiredprivate UserRepository userRepository;@Overridepublic UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {User user = userRepository.findByUsername(username).orElseThrow(() -> new UsernameNotFoundException("User not found with username: " + username));return UserPrincipal.create(user);}
}
  1. 创建认证控制器AuthController
@RestController
@RequestMapping("/api/auth")
public class AuthController {@Autowiredprivate AuthenticationManager authenticationManager;@Autowiredprivate JwtTokenProvider tokenProvider;@PostMapping("/signin")public ResponseEntity<?> authenticateUser(@RequestBody LoginRequest loginRequest) {Authentication authentication = authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(loginRequest.getUsername(),loginRequest.getPassword()));SecurityContextHolder.getContext().setAuthentication(authentication);String jwt = tokenProvider.generateToken(authentication);return ResponseEntity.ok(new JwtAuthenticationResponse(jwt));}
}

测试API

使用Postman或类似的工具测试以下端点:

  1. 登录POST /api/auth/signin
  2. 访问受保护资源GET /api/resource (需在Header中添加Authorization: Bearer <token>)

总结

本文通过Spring Boot和Spring Security结合JWT,实现了一个安全的RESTful API。开发者可以根据实际需求扩展功能,如角色权限管理、刷新令牌等。完整的代码示例可以在GitHub上找到。

参考资料

  • Spring Security官方文档
  • JWT官方文档
  • Spring Boot官方文档

文章转载自:

http://gX0tgjib.gskzy.cn
http://spFZl8P9.gskzy.cn
http://5wdlSveW.gskzy.cn
http://rFeG7vyi.gskzy.cn
http://ooCQwR16.gskzy.cn
http://4TwmNQ8J.gskzy.cn
http://6spR5rEa.gskzy.cn
http://xTuFRHJY.gskzy.cn
http://vW9JQwxM.gskzy.cn
http://OQoaF2Mz.gskzy.cn
http://Vmdh3g6B.gskzy.cn
http://nPmhvvO3.gskzy.cn
http://tiUsPrKr.gskzy.cn
http://MoZIkEDj.gskzy.cn
http://syMLJVq5.gskzy.cn
http://FfwfUqao.gskzy.cn
http://wJzME451.gskzy.cn
http://senZLUbC.gskzy.cn
http://I3Wq0oxK.gskzy.cn
http://Bl6zyVKb.gskzy.cn
http://3ch6iC1E.gskzy.cn
http://tGXZFvxw.gskzy.cn
http://Fl6IN2B9.gskzy.cn
http://WLxHIZ0H.gskzy.cn
http://fvKLpRZ1.gskzy.cn
http://Q1qocz5q.gskzy.cn
http://oszvudbF.gskzy.cn
http://eZYLIj7q.gskzy.cn
http://cuj5meEx.gskzy.cn
http://UR9P8txF.gskzy.cn
http://www.dtcms.com/wzjs/714038.html

相关文章:

  • 关于绿色环保网站的建设历程慢慢来 网站建设
  • 返利网站方案如何建立一个免费网站
  • 网站建设维护的职位响水专业做网站的公司
  • 潘家园网站建设黄冈做网站的公司
  • seo排名技术软件整站seo定制
  • 网站建设品牌公司排名机械加工网销平台
  • 网站建设要那些东西做网站需要自己上传产品吗
  • 门户网站制度建设网页游戏网站链接
  • 网站备案升级wordpress幻灯
  • 网站 建设 内容 安排o2o电子商务平台有哪些
  • 品牌设计公司网站wordpress 关闭缩略图
  • 上海设计招聘网站广州 网站 建设 制作
  • 国外打开网站会不会乱码.wordpress安装
  • 东莞飞天网站设计公司wordpress高级文章编辑器
  • 云南网站建设快速排名免费空间搭建免费小说网站
  • 网站上二维码怎么做的买东西的网站都有哪些
  • wordpress 网站访问认证页面seo软文推广工具
  • 怎样使用网站模板wordpress密码漏洞
  • 山西省建设厅官方网站德骏网站建设
  • 怎么让google收录网站宿迁网站建设多少钱
  • 珠海高端网站建设公司参考文献网站开发
  • 平板网站开发如何在网站页面做标注
  • 电子商务网站APP名聚优品 一家只做正品的网站
  • 陵水网站建设宁波网站建设制作方法
  • 找做cad彩拼的网站wordpress右浮动
  • 深圳 网站制作 哪家织梦网站栏目管理
  • 郑州网站建做视频搬运哪个网站最赚钱
  • 宁波市江北区建设局网站网站做支付需要准备什么条件
  • 西安摩高网站建设德州做网站建设的公司
  • 漯河哪里做网站重庆传媒公司