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

做营销型网站需要注意哪些点清原招聘网站建设

做营销型网站需要注意哪些点,清原招聘网站建设,网络销售推广公司,云主机可以用来做什么#x1f4d1;前言 本文主要讲了Spring Security文章#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ #x1f3ac;作者简介#xff1a;大家好#xff0c;我是青衿#x1f947; ☁️博客首页#xff1a;CSDN主页放风讲故事 #x1f304;每日一句#xff1a;努力…前言 本文主要讲了Spring Security文章如果有什么需要改进的地方还请大佬指出⛺️ 作者简介大家好我是青衿 ☁️博客首页CSDN主页放风讲故事 每日一句努力一点优秀一点 目录 文章目录 前言**目录**一、介绍二、主要功能三、原理1. SpringSecurity 过滤器链2. JWT校验登录的校验流程 四、Spring Boot整合Redis、SpringSecurity、JWT的示例demo 文章末尾 Spring Security 一、介绍 Spring Security是一个强大且高度可定制的身份验证和访问控制框架。它是保护基于Spring的应用程序的实际标准。Spring Security是一个可以为Java应用程序提供全面安全服务的框架。同时它也可以轻松扩展以满足自定义需求。 二、主要功能 Authentication (认证)就是用户登录 Authorization (授权)一旦身份验证成功判断用户拥有什么权限可以访问什么资源 防止跨站请求伪造CSRFSpring Security提供了内置的防护机制可以防止跨站请求伪造攻击。 密码存储Spring Security提供了多种密码存储格式包括明文、加密和哈希。 集成其他安全框架Spring Security可以与其他安全框架如OAuth2、JWT等进行集成以提供更全面的安全解决方案。 三、原理 ​ SpringSecurity的原理其实就是一个过滤器链内部包含了提供各种功能的过滤器。 1. SpringSecurity 过滤器链 SpringSecurity 采用的是责任链的设计模式它有一条很长的过滤器链。 SecurityContextPersistenceFilter每次请求处理之前将该请求相关的安全上下文信息加载到 SecurityContextHolder 中。LogoutFilter用于处理退出登录。UsernamePasswordAuthenticationFilter用于处理基于表单的登录请求从表单中获取用户名和密码。BasicAuthenticationFilter检测和处理 http basic 认证。ExceptionTranslationFilter处理过滤器链中抛出的任何AccessDeniedException和AuthenticationException 。FilterSecurityInterceptor负责权限校验的过滤器可以看做过滤器链的出口。… 流程说明:客户端发起一个请求进入 Security 过滤器链。 1.当到 LogoutFilter 的时候判断是否是登出路径如果是登出路径则到 logoutHandler 如果登出成功则到logoutSuccessHandler 登出成功处理如果登出失败则由 ExceptionTranslationFilter 如果不是登出路径则直接进入下一个过滤器。 2.当到 UsernamePasswordAuthenticationFilter 的时候判断是否为登录路径如果是则进入该过滤器进行登录操作如果登录失败则到 AuthenticationFailureHandler 登录失败处理器处理如果登录成功则到 AuthenticationSuccessHandler 登录成功处理器处理如果不是登录请求则不进入该过滤器。 3.当到 FilterSecurityInterceptor 的时候会拿到 uri 根据 uri 去找对应的鉴权管理器鉴权管理器做鉴权工作鉴权成功则到 Controller 层否则到 AccessDeniedHandler 鉴权失败处理器处理。 2. JWT校验登录的校验流程 首先前端一样是把登录信息发送给后端后端查询数据库校验用户的账号和密码是否正确正确的话则使用jwt生成token并且返回给前端。以后前端每次请求时都需要携带token后端获取token后使用jwt进行验证用户的token是否无效或过期验证成功后才去做相应的逻辑。 四、Spring Boot整合Redis、SpringSecurity、JWT的示例demo 添加依赖项在 pom.xml 文件中添加以下依赖项 dependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-security/artifactId/dependencydependencygroupIdio.jsonwebtoken/groupIdartifactIdjjwt/artifactIdversion0.9.1/version/dependency /dependencies创建Redis配置类 Configuration public class RedisConfig {Value(${spring.redis.host})private String host;Value(${spring.redis.port})private int port;Beanpublic JedisConnectionFactory jedisConnectionFactory() {return new JedisConnectionFactory(new RedisStandaloneConfiguration(host, port));}Beanpublic RedisTemplateString, Object redisTemplate() {final RedisTemplateString, Object template new RedisTemplate();template.setConnectionFactory(jedisConnectionFactory());return template;} }创建 JwtTokenUtil 类用于生成和验证JWT令牌。 Component public class JwtTokenUtil implements Serializable {private static final long serialVersionUID -2550185165626007488L;private static final String secret mySecret;public String getUsernameFromToken(String token) {return getClaimFromToken(token, Claims::getSubject);}public Date getExpirationDateFromToken(String token) {return getClaimFromToken(token, Claims::getExpiration);}public T T getClaimFromToken(String token, FunctionClaims, T claimsResolver) {final Claims claims getAllClaimsFromToken(token);return claimsResolver.apply(claims);}private Claims getAllClaimsFromToken(String token) {return Jwts.parser().setSigningKey(secret).parseClaimsJws(token).getBody();}private Boolean isTokenExpired(String token) {final Date expiration getExpirationDateFromToken(token);return expiration.before(new Date());}public String generateToken(UserDetails userDetails) {MapString, Object claims new HashMap();return doGenerateToken(claims, userDetails.getUsername());}private String doGenerateToken(MapString, Object claims, String subject) {return Jwts.builder().setClaims(claims).setSubject(subject).setIssuedAt(new Date(System.currentTimeMillis())).setExpiration(new Date(System.currentTimeMillis() 5 * 60 * 60 * 1000)).signWith(SignatureAlgorithm.HS512, secret).compact();}public Boolean validateToken(String token, UserDetails userDetails) {final String username getUsernameFromToken(token);return (username.equals(userDetails.getUsername()) !isTokenExpired(token));} } 创建 JwtAuthenticationEntryPoint 类用于处理未经授权的请求。 Component public class JwtAuthenticationEntryPoint implements AuthenticationEntryPoint, Serializable {private static final long serialVersionUID -7858869558953243875L;Overridepublic void commence(HttpServletRequest request, HttpServletResponse response,AuthenticationException authException) throws IOException {response.sendError(HttpServletResponse.SC_UNAUTHORIZED, Unauthorized);} } 创建 JwtRequestFilter 类用于解析和验证JWT令牌。 Component public class JwtRequestFilter extends OncePerRequestFilter {Autowiredprivate MyUserDetailsService myUserDetailsService;Autowiredprivate JwtTokenUtil jwtTokenUtil;Overrideprotected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain)throws ServletException, IOException {final String requestTokenHeader request.getHeader(Authorization);String username null;String jwtToken null;if (requestTokenHeader ! null requestTokenHeader.startsWith(Bearer )) {jwtToken requestTokenHeader.substring(7);try {username jwtTokenUtil.getUsernameFromToken(jwtToken);} catch (IllegalArgumentException e) {System.out.println(Unable to get JWT Token);} catch (ExpiredJwtException e) {System.out.println(JWT Token has expired);}} else {logger.warn(JWT Token does not begin with Bearer String);}if (username ! null SecurityContextHolder.getContext().getAuthentication() null) {UserDetails userDetails this.myUserDetailsService.loadUserByUsername(username);if (jwtTokenUtil.validateToken(jwtToken, userDetails)) {UsernamePasswordAuthenticationToken usernamePasswordAuthenticationToken new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities());usernamePasswordAuthenticationToken.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));SecurityContextHolder.getContext().setAuthentication(usernamePasswordAuthenticationToken);}}chain.doFilter(request, response);} } 配置Spring Security Configuration EnableWebSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter {Autowiredprivate JwtAuthenticationEntryPoint jwtAuthenticationEntryPoint;Autowiredprivate UserDetailsService jwtUserDetailsService;Autowiredprivate JwtRequestFilter jwtRequestFilter;Autowiredpublic void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {auth.userDetailsService(jwtUserDetailsService).passwordEncoder(passwordEncoder());}Beanpublic PasswordEncoder passwordEncoder() {return new BCryptPasswordEncoder();}BeanOverridepublic AuthenticationManager authenticationManagerBean() throws Exception {return super.authenticationManagerBean();}Overrideprotected void configure(HttpSecurity httpSecurity) throws Exception {httpSecurity.csrf().disable().authorizeRequests().antMatchers(/authenticate).permitAll().anyRequest().authenticated().and().exceptionHandling().authenticationEntryPoint(jwtAuthenticationEntryPoint).and().sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);httpSecurity.addFilterBefore(jwtRequestFilter, UsernamePasswordAuthenticationFilter.class);} }以上是简单的Spring Boot整合Redis、Security、JWT和Redis的示例可以根据自己的实际需求进行调整。 文章末尾
http://wiki.neutronadmin.com/news/14139/

相关文章:

  • 一诺互联网站建设公司无锡百度搜索排名优化
  • 网站开发的趋势系统集成项目管理中级职称
  • 旅游网站开发网站设计报告书网站建设知乎
  • 排名好的网站开发画家个人网站建设
  • 网页模板网站有那些网站建设与设计毕业shej
  • 返佣网站都是自己做的房屋建筑设计说明
  • 怎么建立信息网站平台新遵义吧
  • 大埔建设工程交易中心网站企业信息填报登录
  • 404黄台软件平台seo外包公司兴田德润官方地址
  • 做网站怎么查看来访ip成全视频在线观看免费高清版
  • 廊坊做网站的电话微信自带小程序商城
  • 腾讯云 建网站线上推广专员岗位职责
  • 黑龙江农垦建设局网站wordpress返回html原理
  • linux版网站开发网站建设管理软件
  • 桂林漓江水位淘宝宝贝关键字优化
  • 短链接生成站长工具短网址生成器在线
  • php企业网站开发网站 用cms 侵权
  • dw建设个人网站步骤建筑公司网站首页
  • 网站建设类的计入什么科目定制开发合同
  • 网站维护好的方法做行业门户网站注意什么
  • 专业信息网站建设方案嘉兴微信网站建设
  • 返利网站 帐如何做做网站需要找什么客户
  • 专业网站制作流程网站seo诊断优化方案
  • 参加网站建设项目人员保障体系c语言 网站开发
  • 无锡网站建设 百家号腾讯新闻发布平台
  • 网站开发学习教程wordpress 地址设置方法
  • 南京医院网站建设方案wordpress图片缓冲
  • 买卖网站建设电子商务官方网站
  • 请问的网站开发培训 有知道的吗三栏wordpress+主题
  • 外贸营销网站建设公司排名住房和建设部官方网站