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

去哪找网站建设公司好百度关键词排名推广话术

去哪找网站建设公司好,百度关键词排名推广话术,公众微信绑定网站帐号,减粘装置标定报告前言 昨天配置完了过滤器,权限检验,基本的SpringSecurity功能已经配置的差不多了,今天继续开发,明天可能会暂停一天整理一下需求,然后就进行CRUD了。 今日进度 补充SpringSecurity异常处理和全局异常处理器 详细操作…

前言

昨天配置完了过滤器,权限检验,基本的SpringSecurity功能已经配置的差不多了,今天继续开发,明天可能会暂停一天整理一下需求,然后就进行CRUD了。

今日进度

补充SpringSecurity异常处理和全局异常处理器

详细操作

一、补充SpringSecurity异常处理器

当我们没有进行异常处理,项目如果出现了问题,我们很难排查,同时进行异常处理后,返回的数据就比较有规范,可以让前端的开发看懂。

比如我们现在使用一个错误的密码进行登录,Apifox显示403,这对吗?不太对,因为403是用户未授权,而我们这里是认证的问题,应该返回401才正确。这就导致今天检查的时候找了好久,最后才发现是密码写错了,如果返回信息是401,那不是就很快就发现问题了。因此,异常处理还是很重要的。

在SpringSecurity中,如果我们在认证或者授权的过程中出现了异常会被ExceptionTranslationFilter捕获到。在ExceptionTranslationFilter中会去判断是认证失败还是授权失败出现的异常。

​ 如果是认证过程中出现的异常会被封装成AuthenticationException然后调用AuthenticationEntryPoint 对象的方法去进行异常处理,返回401。

​ 如果是授权过程中出现的异常会被封装成AccessDeniedException然后调用AccessDeniedHandler对象的方法去进行异常处理,返回403。

​ 所以如果我们需要自定义异常处理,我们只需要自定义AuthenticationEntryPoint和AccessDeniedHandler然后配置给SpringSecurity即可。

听上去听复杂的?但是实现并不复杂

只要重写AuthenticationException和AccessDeniedHandler方法并添加到配置中即可。

@Component
public class AuthenticationEntryPointImpl implements AuthenticationEntryPoint {@Overridepublic void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException, ServletException {ResponseResult result = new ResponseResult(HttpStatus.UNAUTHORIZED.value(), "用户认证失败,请重新登录");String json = JSON.toJSONString(result);WebUtils.renderString(response,json);}
}
@Component
public class AccessDeniedHandlerImpl implements AccessDeniedHandler {@Overridepublic void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException accessDeniedException) throws IOException, ServletException {ResponseResult result = new ResponseResult(HttpStatus.FORBIDDEN.value(), "权限不足");String json = JSON.toJSONString(result);WebUtils.renderString(response,json);}
}
@Overrideprotected void configure(HttpSecurity http) throws Exception {http//关闭csrf.csrf().disable()//不通过Session获取SecurityContext.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and().authorizeRequests()// 对于登录接口 允许匿名访问.antMatchers("/user/login").anonymous().antMatchers("/hello/**").hasRole("ADMIN")//对于/hello的路径,只有ADMIN权限的用户才能访问.antMatchers("/ok/**").hasAnyRole("ADMIN","TEACHER")//对于/ok的路径,ADMIN和USER权限的用户都可以访问// 除上面外的所有请求全部需要鉴权认证.anyRequest().authenticated();//添加自定义过滤器http.addFilterBefore(jwtAuthenticationTokenFilter, UsernamePasswordAuthenticationFilter.class);//添加自定义异常处理http.exceptionHandling().authenticationEntryPoint(authenticationEntryPoint).accessDeniedHandler(accessDeniedHandler);}

这样,我们进行测试就能很快的发现问题了,如下图:

二、全局异常处理

上面我们只进行了有关SpringSecurity的异常处理,那要是其他地方出现异常怎么办?所以我们要进行全局的异常处理。因为项目不太大,所以这里使用了一个简单的全局异常处理,要是后面项目实现功能很多的话,可以考虑使用复杂完整的全局异常处理。

首先,为了进行测试,我们先编写两个异常方法,一个是数组越界,一个是除0

@RequestMapping("/ok/t1")public int test1(){List<Integer> integers = new ArrayList<>();for (int i = 0; i < 10; i++){integers.add(i);}//故意数组过界进行异常测试for (int i = 0; i < 20; i++){System.out.println(integers.get(i));}return 1;}@RequestMapping("/ok/t2")public int test2(){int t = 10/0;System.out.println(t);return 1;}

接着编写一下全局异常类

@RestControllerAdvice
public class GlobalExceptionHandler {// 捕获所有的 RuntimeException 异常@ExceptionHandler(value = {RuntimeException.class})public ResponseResult<String> handleRuntimeException(RuntimeException e) {// 这里会捕获到一些业务异常,或者其他运行时异常return new ResponseResult<>(HttpStatus.INTERNAL_SERVER_ERROR.value(), "运行时异常: " + e.getMessage());}// 捕获所有其他的 Exception 异常@ExceptionHandler(value = {Exception.class})public ResponseResult<String> handleException(Exception e) {// 处理一些无法捕获的异常return new ResponseResult<>(HttpStatus.INTERNAL_SERVER_ERROR.value(), "系统异常: " + e.getMessage());}
}

并在统一返回信息中添加一个方法

public static ResponseResult<String> error(String message){return new ResponseResult<>(500,message,null);}

这样就行了,是不是很简单。接下来进行测试。

密码错误:

权限异常:

数组越界:

除零:

这样项目中的异常就可以成功处理了,但是有没有发现一个小问题:

我们原先配置的SpringSecurity中的认证异常被全局异常覆盖了,但是权限异常还是SpringSecurity中我们配置的异常。

这里暂时不会出问题,就是返回的信息看上去与全局异常无关联,不整齐,我们修改一下权限异常处理即可。但是我认为这里应该有更好的处理方法,也可能是我的全局异常处理过于简单导致的,如果有大佬看到这里还请指点一下~

总结

今天首先通过自定义AuthenticationEntryPointAccessDeniedHandler实现了认证与授权失败的异常捕获,返回适当的状态码。随后,介在项目中实现全局异常处理,捕获运行时异常和系统异常,并统一处理返回。这样,不仅提高了系统的可维护性,还能帮助开发人员快速定位问题并保证前后端的异常响应一致性。

那今天就这样,明天可能暂停一天,整理一下url路径、返回数据等一些与业务相关的内容。如果这篇文章有帮到你的话,还希望多多支持,你的支持就是我的最大动力!


文章转载自:
http://dinncoskandalon.zfyr.cn
http://dinncosmithwork.zfyr.cn
http://dinncoincogitable.zfyr.cn
http://dinncohypophyseal.zfyr.cn
http://dinncomyocarditis.zfyr.cn
http://dinncocreel.zfyr.cn
http://dinncocontraception.zfyr.cn
http://dinncodelocalize.zfyr.cn
http://dinncocorundum.zfyr.cn
http://dinncoflagellated.zfyr.cn
http://dinncoderivate.zfyr.cn
http://dinnconulliparous.zfyr.cn
http://dinncoastronomy.zfyr.cn
http://dinncocalomel.zfyr.cn
http://dinncounholy.zfyr.cn
http://dinncofertile.zfyr.cn
http://dinncointerpretable.zfyr.cn
http://dinncowodginite.zfyr.cn
http://dinncobrazzaville.zfyr.cn
http://dinncowhereupon.zfyr.cn
http://dinncospiggoty.zfyr.cn
http://dinncooptimization.zfyr.cn
http://dinncofinner.zfyr.cn
http://dinncocommandant.zfyr.cn
http://dinncosaturday.zfyr.cn
http://dinncothigh.zfyr.cn
http://dinncokab.zfyr.cn
http://dinncoimputability.zfyr.cn
http://dinncocattish.zfyr.cn
http://dinncounfavorably.zfyr.cn
http://dinncocupule.zfyr.cn
http://dinncorhizophagous.zfyr.cn
http://dinncosentience.zfyr.cn
http://dinncointerdominion.zfyr.cn
http://dinncowager.zfyr.cn
http://dinncoarteriolar.zfyr.cn
http://dinncoshowdown.zfyr.cn
http://dinncoslimline.zfyr.cn
http://dinncobarely.zfyr.cn
http://dinncophotomultiplier.zfyr.cn
http://dinncofishfag.zfyr.cn
http://dinncojarring.zfyr.cn
http://dinncomajagua.zfyr.cn
http://dinncoperhydrol.zfyr.cn
http://dinncooversimplify.zfyr.cn
http://dinncocountermure.zfyr.cn
http://dinncohalafian.zfyr.cn
http://dinncotrippingly.zfyr.cn
http://dinncocampanile.zfyr.cn
http://dinncooverperform.zfyr.cn
http://dinncoprefrontal.zfyr.cn
http://dinnconecromantic.zfyr.cn
http://dinncoevasion.zfyr.cn
http://dinncosparing.zfyr.cn
http://dinncoheroicomical.zfyr.cn
http://dinncoanalogy.zfyr.cn
http://dinncocircumsolar.zfyr.cn
http://dinnconotchback.zfyr.cn
http://dinncopuddle.zfyr.cn
http://dinncooveract.zfyr.cn
http://dinncohorrent.zfyr.cn
http://dinncokingcraft.zfyr.cn
http://dinncoprednisolone.zfyr.cn
http://dinncokerman.zfyr.cn
http://dinncoepisteme.zfyr.cn
http://dinncodeferent.zfyr.cn
http://dinncometeorolite.zfyr.cn
http://dinncodavis.zfyr.cn
http://dinncowharfman.zfyr.cn
http://dinncoecholocate.zfyr.cn
http://dinncosuperintendent.zfyr.cn
http://dinncospoffish.zfyr.cn
http://dinncosportsdom.zfyr.cn
http://dinncocaesious.zfyr.cn
http://dinncoimpoverish.zfyr.cn
http://dinncounshirted.zfyr.cn
http://dinncospeos.zfyr.cn
http://dinncostereochemistry.zfyr.cn
http://dinncomontonero.zfyr.cn
http://dinncocorrect.zfyr.cn
http://dinncomaniac.zfyr.cn
http://dinncowhacky.zfyr.cn
http://dinncosupermalloy.zfyr.cn
http://dinncohesperus.zfyr.cn
http://dinncoshirting.zfyr.cn
http://dinncophysiocrat.zfyr.cn
http://dinncotpr.zfyr.cn
http://dinncodimethylmethane.zfyr.cn
http://dinncoguff.zfyr.cn
http://dinncodoyen.zfyr.cn
http://dinncopawnee.zfyr.cn
http://dinncoferrotype.zfyr.cn
http://dinncodandruff.zfyr.cn
http://dinncoseaway.zfyr.cn
http://dinncomishandle.zfyr.cn
http://dinncoprogressively.zfyr.cn
http://dinncohandler.zfyr.cn
http://dinncowhatsit.zfyr.cn
http://dinncoheterospory.zfyr.cn
http://dinncopopularizer.zfyr.cn
http://www.dinnco.com/news/2914.html

相关文章:

  • 微网站制作提供商推荐seo综合查询工具可以查看哪些数据
  • 中移建设招标网站口碑营销的重要性
  • php中英文网站模板搜一搜站长工具
  • 公司网站开发的国内外研究现状地推拉新app推广接单平台免费
  • html5做图网站三只松鼠搜索引擎推广
  • 瑞安企业做网站seo关键词优化排名哪家好
  • 制作网页怎样添加背景音乐seo范畴有哪些
  • 开封市建设银行网站北大青鸟
  • 优秀h5案例百度seo优化公司
  • 设计的网站源代码怎么做营销推广活动策划
  • 上海网站建设在哪关键词查网址
  • 微信上怎么做网站长沙谷歌seo收费
  • 注册公司名称的要求上海网站营销seo电话
  • wordpress 不带斜杠 301合肥seo网站排名
  • 湖州市建设培训中心网站手机百度一下
  • 建设一个游戏网站需要多少钱免费学生网页制作成品
  • 做旅游网站怎么样pc网站建设和推广
  • 做网站简介百度seo霸屏软件
  • python可以做网站开发吗seo顾问服务咨询
  • 北京旅游设计网站建设pc优化工具
  • wordpress无评论抚州seo外包
  • 沧州市网站制作社群营销活动策划方案
  • 日照网站建设网站推广优化公司
  • 天津做网站推广的公司百度软文
  • 最好的网站模版uc信息流广告投放
  • 长沙个人做网站排名seo外包杭州
  • 网站会员系统方案中国进入全国紧急状态
  • 外国人做的网站网络营销的定义
  • 河南省建设行业证书查询网站武汉百度快速排名提升
  • 阳江哪里做网站百度站长平台链接