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

建站之星和凡科企业网站全屏轮播怎么做

建站之星和凡科,企业网站全屏轮播怎么做,软件商店下载安装到桌面,百度h5转换器Web应用中#xff0c;用户认证与授权是至关重要的功能#xff0c;确保只有合法用户才能访问受保护的资源。Spring Security作为一个强大的安全框架#xff0c;支持多种认证与授权方式。在本章节中#xff0c;我们将深入探讨三种常见的用户认证与授权方案#xff1a;基于To…Web应用中用户认证与授权是至关重要的功能确保只有合法用户才能访问受保护的资源。Spring Security作为一个强大的安全框架支持多种认证与授权方式。在本章节中我们将深入探讨三种常见的用户认证与授权方案基于Token的用户认证JWT、OAuth2认证与授权以及使用Spring Security与OAuth2实现社交登录。 1. 实现基于Token的用户认证JWT 1.1 什么是JWT JWTJSON Web Token是一种基于Token的认证机制广泛应用于分布式系统中。它通常由三部分组成 Header通常包含Token类型和加密算法的信息。Payload包含用户的身份信息及相关的元数据如角色。Signature用于验证JWT的真实性通常使用秘钥进行加密。 JWT的优势在于它是无状态的也就是说服务器不需要存储会话信息所有信息都包含在JWT中。这使得它非常适用于微服务架构和分布式系统。 1.2 JWT认证流程 用户登录时提交用户名和密码。服务器验证用户信息通过验证后生成JWT。将JWT返回给客户端客户端保存Token。客户端在后续请求中将Token附加在HTTP请求的Authorization头部中服务器通过解密Token来验证用户身份。 1.3 使用Spring Boot实现JWT认证 添加依赖 在pom.xml中添加JWT相关依赖 dependencygroupIdio.jsonwebtoken/groupIdartifactIdjjwt/artifactIdversion0.11.5/version /dependency 生成JWT的工具类 创建一个JWT生成工具类用于生成和解析JWT。 Component public class JwtTokenUtil {private String secretKey secret; // 秘钥应该放在配置文件中private long expirationTime 86400000L; // 过期时间24小时// 生成JWTpublic String generateToken(String username) {Date now new Date();Date expiryDate new Date(now.getTime() expirationTime);return Jwts.builder().setSubject(username).setIssuedAt(now).setExpiration(expiryDate).signWith(SignatureAlgorithm.HS512, secretKey).compact();}// 从JWT中解析出用户名public String getUsernameFromToken(String token) {return Jwts.parser().setSigningKey(secretKey).parseClaimsJws(token).getBody().getSubject();}// 验证JWT是否有效public boolean validateToken(String token, String username) {String parsedUsername getUsernameFromToken(token);return (parsedUsername.equals(username) !isTokenExpired(token));}// 判断JWT是否过期private boolean isTokenExpired(String token) {Date expiration Jwts.parser().setSigningKey(secretKey).parseClaimsJws(token).getBody().getExpiration();return expiration.before(new Date());} } 认证过滤器 创建一个过滤器用于在每个请求中验证JWT。 Component public class JwtAuthenticationFilter extends OncePerRequestFilter {Autowiredprivate JwtTokenUtil jwtTokenUtil;Overrideprotected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)throws ServletException, IOException {String token request.getHeader(Authorization);if (token ! null token.startsWith(Bearer )) {token token.substring(7);String username jwtTokenUtil.getUsernameFromToken(token);if (username ! null SecurityContextHolder.getContext().getAuthentication() null) {UsernamePasswordAuthenticationToken authentication new UsernamePasswordAuthenticationToken(username, null, new ArrayList());SecurityContextHolder.getContext().setAuthentication(authentication);}}filterChain.doFilter(request, response);} } ​​​​​​​用户认证与生成Token 在用户登录时生成JWT并返回给客户端。 RestController public class AuthController {Autowiredprivate JwtTokenUtil jwtTokenUtil;PostMapping(/login)public ResponseEntity? createAuthenticationToken(RequestBody AuthenticationRequest authenticationRequest) {// 验证用户身份if (user.equals(authenticationRequest.getUsername()) password.equals(authenticationRequest.getPassword())) {String token jwtTokenUtil.generateToken(authenticationRequest.getUsername());return ResponseEntity.ok(new AuthenticationResponse(token));}return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(Invalid credentials);} } 1.4 保护资源 在需要保护的资源上使用PreAuthorize或Secured注解来进行权限控制。 RestController RequestMapping(/admin) public class AdminController {GetMapping(/dashboard)PreAuthorize(hasRole(ADMIN))public String getAdminDashboard() {return Admin Dashboard;} } 2. 配置OAuth2认证与授权 2.1 什么是OAuth2 OAuth2是一个授权框架用于让第三方应用访问用户资源而无需暴露用户的用户名和密码。OAuth2通过授权码、密码、客户端凭证等不同方式来获取Token常见的应用场景包括社交登录和API访问。 2.2 配置OAuth2认证 在Spring Boot中OAuth2认证可以通过spring-security-oauth2-client和spring-security-oauth2-jose等库来配置。 ​​​​​​​添加依赖 在pom.xml中添加OAuth2的相关依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-oauth2-client/artifactId /dependency ​​​​​​​配置application.yml 在application.yml中配置OAuth2客户端信息如以下示例配置Google OAuth2登录 spring:security:oauth2:client:registration:google:client-id: YOUR_GOOGLE_CLIENT_IDclient-secret: YOUR_GOOGLE_CLIENT_SECRETscope:- profile- emailredirect-uri: {baseUrl}/login/oauth2/code/{registrationId}authorization-grant-type: authorization_codeclient-name: Googleprovider:google:authorization-uri: https://accounts.google.com/o/oauth2/authtoken-uri: https://oauth2.googleapis.com/tokenuser-info-uri: https://www.googleapis.com/oauth2/v3/userinfo ​​​​​​​OAuth2登录处理 Spring Boot自动处理OAuth2登录过程。您只需配置相关的OAuth2提供商如Google、GitHub等并在应用中使用EnableOAuth2Sso注解来开启社交登录。 SpringBootApplication EnableOAuth2Sso public class OAuth2Application {public static void main(String[] args) {SpringApplication.run(OAuth2Application.class, args);} } 3. 使用Spring Security与OAuth2实现社交登录 3.1 社交登录简介 社交登录Social Login是指通过已有的社交媒体账户如Google、Facebook、GitHub等进行身份验证的方式。通过OAuth2协议用户无需在每个应用中注册单独的账户只需使用现有的社交账户登录。 3.2 配置社交登录 ​​​​​​​配置第三方OAuth2登录 以GitHub为例在application.yml中配置GitHub OAuth2客户端 spring:security:oauth2:client:registration:github:client-id: YOUR_GITHUB_CLIENT_IDclient-secret: YOUR_GITHUB_CLIENT_SECRETscope: read:userredirect-uri: {baseUrl}/login/oauth2/code/{registrationId}authorization-grant-type: authorization_codeclient-name: GitHubprovider:github:authorization-uri: https://github.com/login/oauth/authorizetoken-uri: https://github.com/login/oauth/access_tokenuser-info-uri: https://api.github.com/user ​​​​​​​自定义用户信息 在OAuth2UserService中您可以自定义如何从OAuth2提供商获取用户信息。 Service public class CustomOAuth2UserService extends DefaultOAuth2UserService {Overridepublic OAuth2User loadUser(OAuth2UserRequest userRequest) throws OAuth2AuthenticationException {OAuth2User user super.loadUser(userRequest);// 在此可以从user中获取用户信息并存储到数据库return user;} } ​​​​​​​社交登录成功后的回调处理 使用Spring Security的默认OAuth2登录机制用户登录成功后会自动跳转到指定的成功页面您可以在SecurityConfig中自定义成功和失败的处理 Configuration EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter {Overrideprotected void configure(HttpSecurity http) throws Exception {http.oauth2Login().loginPage(/login).successHandler(new OAuth2LoginSuccessHandler()).failureHandler(new OAuth2LoginFailureHandler());} } 3.3 完成社交登录 通过以上配置您已经成功集成了OAuth2社交登录支持用户通过Google、GitHub等社交账户进行登录。 总结 本文详细介绍了基于Token的用户认证JWT、OAuth2认证与授权的配置与实现以及如何使用Spring Security与OAuth2实现社交登录。通过这些技术我们可以实现灵活且安全的认证与授权机制并有效地支持分布式应用和微服务架构中的用户管理。 关于作者 15年互联网开发、带过10-20人的团队多次帮助公司从0到1完成项目开发在TX等大厂都工作过。当下为退役状态写此篇文章属个人爱好。本人开发期间收集了很多开发课程等资料需要可联系我
http://www.w-s-a.com/news/404363/

相关文章:

  • 成都私人做公司网站的北京网站建设需要多少钱
  • 魔客吧是什麼程序做的网站代理厦门网站设计公司
  • 90设计手机站东营网站推广
  • 哪家购物网站建设好专门做水生植物销售网站
  • php医院网站开发兼职app开发网上app开发
  • 接任务做兼职的的网站衡阳手机网站设计
  • 徐州经济开发区网站佛山百度关键词seo外包
  • 肃宁网站建设有限责任公司法人承担什么责任
  • 珠海斗门建设局网站如何免费做网站
  • 自助外贸网站建设可直接打开网站的网页
  • 江苏城嘉建设工程有限公司网站潍坊网站定制公司
  • 四川省住房和城乡建设厅新网站宜昌建设厅网站
  • 建设网站一般流程建设开发网站
  • 设计外贸英文网站国家企业信息信用公信系统
  • 主题资源网站创建时 如何突出设计的特点阿里云是做网站的吗
  • 乌市建设工程质量监督站网站外资公司注册
  • 档案馆网站机房建设做游戏网站打鱼
  • 网站建设平台 创新模式搭建好ftp服务器 如何通过网站访问
  • 苏州集团网站制作设计网页制作软件ai
  • 网站建设新手教程视频教程手帐风格wordpress主题
  • 做投标网站条件网站更改指定字段
  • mvc5 网站开发之美做印刷网站公司
  • 医疗网站建设精英微信网站用什么制作的
  • 银川网站设计联系电话地推加人2元1个
  • 龙华网站 建设深圳信科北京知名的网站建设公司
  • 怎么做qq刷赞网站搜盘 资源网
  • 微网站怎么做的好名字吗陕西省医院网站建设管理
  • 泉州seo-泉州网站建设公司温州企业自助建站系统
  • 网站建设属于什么费网站建设网络推广
  • 德州网站开发人员网站怎么才能被百度收录