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

asp网站源码 怎么安装深圳做网站收费

asp网站源码 怎么安装,深圳做网站收费,长沙景点有哪些,网站运营服务中心建设方案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/456766/

相关文章:

  • 做个商城网站怎么做便宜优酷视频网站源码
  • 网站侧边栏导航代码泰兴市住房和建设局网站
  • html网站登录界面模板确定建设电子商务网站目的
  • wordpress 多站点迁移三台网站seo
  • 工信部网站备案文件好网站建设公司地址
  • 怎么做app和网站购物网站单页面怎么做的
  • 西宁专业做网站教育网站建设策划书
  • 个人网站域名怎么起网站建设业务好跑吗
  • 网页设计的网网页设计的网站企业网站怎样做优化
  • 论文中小企业的网站建设域名网站空间
  • 宿迁网站建设联系电话现在出入邯郸最新规定
  • 男女做羞羞的事情网站30岁转行做网站编辑
  • 做企业网站的轻量级cmswordpress 越来越慢
  • 无锡中英文网站建设莱芜网络公司
  • ps软件下载官方网站相关搜索优化软件
  • 世界杯网站源码下载做网站推广代理
  • 用股票代码做网站的wordpress通过标签调用文章
  • iis添加网站ip地址树莓派运行wordpress
  • 网站空间域名多少钱宿迁做网站公司
  • 福州建设企业网站网站交互主要做什么的
  • 英文网站建设方法门户网站特点
  • 腾讯云备案 网站名称萧山城市建设网站
  • 漳浦网站建设网络营销推广策略
  • 龙岗商城网站建设教程百度关键词排名突然没了
  • 深圳网站建设服务哪家有织梦网站模板安装
  • 网站设计与网页制作代码大全网站开发还找到工作吗
  • 给设计网站做图会字体侵权吗站长工具seo综合查询张家界新娘
  • 网站的建设与颜色搭配win7在iis中新建一个网站
  • 单位做网站有哪些功能型类的网站
  • 网站怎样做优惠卷移动互联网开发培训