首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spring Security 实战干货: 401和403状态

前言 最近几篇我对Spring Security中用户认证流程进行了分析,同时在分析的基础上我们实现了一个验证码登录认证的实战功能。...今天来谈谈两个和认证授权息息相关的两个状态401和403以及它们如何在Spring Security融入体系中的。 2. 401 未授权 我在RFC 7235[1]中找到了相关的表述。...当客户端收到401状态码时,表明了该请求因为缺乏了被信任的认证凭据而被拒绝访问目标资源。 如果用户在请求中携带了认证凭据,那么401响应表明该凭据是未授信的,不能访问目标资源。...403状态代码表示服务器已理解了客户端的请求,但拒绝授权。如果请求中提供了身份验证凭据,则服务器认为它们不足以授予访问权限。客户端不应自动携带相同的重复证书再次请求。...Spring Security 中的这两种状态 通常情况Spring Security中的401和403两种状态都是以异常的形式来进行体现的,由AuthenticationException和AccessDeniedException

3.6K30

HTTP协议之状态码详解

HTTP状态码,我都是现查现用。 我以前记得几个常用的状态码,比如200,302,304,404, 503。 一般来说我也只需要了解这些常用的状态码就可以了。 ...如果是做AJAX,REST,网络爬虫,机器人等程序。还是需要了解其他状态码。  本文我花了一个多月的时间把所有的状态码都总结了下,内容太多,看的时候麻烦耐心点了。   ...可以参考【Fiddler Composer创建和发送HTTP Request】   什么是HTTP状态码   HTTP状态码的作用是:Web服务器用来告诉客户端,发生了什么事。   ...(重置内容) 另一个主要用于浏览器的代码。...这个代码是和一个选项列表一起返回的,然后用户就可以选择他希望的选项了 301 Moved Permanently(永久移除) 请求的URL已移走。

1.5K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    为什么要有refreshToken

    向服务器请求时,服务器会返回401的状态码来告诉用户此token过期了,此时就需要用到登录时返回的refreshToken调用刷新Token的接口(Refresh)来更新下新的token再发送请求即可。...当响应码为401时,响应拦截器会走中第二个回调函数onRejected 下面代码分段可能会让大家阅读起来不是很顺畅,我直接把整份代码贴在下面,且每一段代码之间都添加了对应的注释 // 最大重发次数const...,这里仅展示处理状态码为401的情况 if (statusCode === 401) { // accessToken失效 // 判断本地是否有缓存有refreshToken const...token的代码抽离成一个refreshToken函数,单独处理这一情况,这样子做有利于提高代码的可读性和维护性,且让看上去代码不是很臃肿// refreshToken.tsexport default...status; // 为了节省多余的代码,这里仅展示处理状态码为401的情况 if (statusCode === 401) { refreshToken() } return Promise.reject

    1.8K20

    PHP基础面试题 - 第六天

    而在接口中加入新的方法,那么实现它的类就要重新编写(这就是为什么说接口是一个类的规范了)。...接口成员被定义为公共的,但抽象类的成员也可以是私有的、受保护的、内部的或受保护的内部成员(其中受保护的内部成员只能在应用程序的代码或派生类中访问)。...HTTP 协议 中几个状态码的含义 :503 500 401 200 301 302 200 客户端请求成功 301 请求的网页已永久移动到新位置 302 服务器目前从不同位置的网页响应请求 401 请求未经授权...,这个状态代码必须和WWW-Authenticate报头域一起使用 500 服务器发生不可预期的错误 503 服务器当前不能处理客户端的请求,一段时间后可能恢复正常 4.请写出HTTP头,并符合以下要求...3、最关键的,只需要画出正确的“轮廓”(还记得httpwatch 等工具打印出来的头部吗?那就是“轮廓” 的含义),也会有分数,但如果,链“”都写错了,那么就很遗憾了。

    47330

    系统服务化构建-状态码设计要点

    前端 WebView 的请求会涉及到跨域 CORS 其实简单来说,客户端工程师最关心两个问题: 第一,接口有没有通。 第二,接口有没有返回我想要的数据。...客户端排除法 客户端 HTTP 请求的通用方法是采用排除法,什么是排除法,客户端在请求服务端的 REST 接口时,会先在网络层面判断接口是否通,包括 404 或者 200常见几个状态 。...for the browser and node.js 以下代码是两段响应拦截,分别是拦截 HTTP 协议的 401 验证不通过,自定义业务代码的验证不通过。...这里应该以 HTTP 状态码为依据,主要有 200, 401 ,表明请求是【触碰到关于的数据处理的业务部分了】如 HTTP/1.1 200 OK{ "code": 0, "message": "客户端已是最新版本...当然是先接收 HTTP 状态码,其次是业务状态码,不混淆,也不能混淆。从软件分层的角度来说,接收 HTTP 状态码在接收业务状态码的上层,通常由拦截器来做,比如 token 过期的 401 阻挡。

    4.1K30

    HTTP 响应状态码全解

    1×× 提示信息类状态码 1xx 提示信息类状态代码表示在完成请求的动作并发送最终响应之前,用于表示通信连接状态或请求进度的临时响应。...304-未修改 300-多种选择 303-参见其他 305-使用代理 307-临时重定向 308-永久重定向 4×× 客户端错误 4xx(客户端错误)类状态代码表示客户端似乎出错了。...401 未经授权 401(未授权)状态码表示该请求尚未应用,因为它缺少目标资源的有效身份验证凭据。 403 禁止 403(禁止)状态代码表示服务器理解请求但拒绝授权。...415 不支持的媒体类型 415(不支持的媒体类型)状态代码表示源服务器拒绝为请求提供服务,因为有效负载的格式不受目标资源上此方法的支持。...请求的范围不满足 417 预期失败 418 我是个茶壶,超文本咖啡罐控制协议,但是并没有被实际的HTTP服务器实现 421 错误的请求 422 不可处理实体 423 锁定 424 失败的依赖关系 426

    3K30

    常见的HTTP状态码有哪些

    当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。...HTTP状态码的英文为HTTP Status Code。...下面是常见的HTTP状态码: 常用的状态码简述 2XX 一般是请求成功 200 正常处理 204 成功处理,但服务器没有新数据返回,显示页面不更新 206 对服务器进行范围请求,只返回一部分数据 3XX...】 307 与302相同,但不会把POST请求变成GET 4XX 表示客户端出错了。...400 请求报文语法错误了 401 需要认证身份 403 没有权限访问 404 服务器没有这个资源 5XX 服务器出错了 500 内部资源出错了 503 服务器正忙

    1.1K00

    学习提升之HTTP状态码详解

    这篇文章是我在学习网络部分的一些学习笔记,在这里分享给大家。之前看到状态码都是搜索下就完事,常用的也都记得,毕竟搭建博客等过程深入学习过这些。...一般常见的状态码已经够使用的,我之前弄博客的时候几乎每天都要见到,不是301就是501,幸运的就是200完美!...另一个主要用于浏览器的代码。...之前改域名做SEO优化的时候经常会碰到301重定向。 状态码 状态消息 含义 300 Multiple Choices(多项选择) 客户端请求了实际指向多个资源的URL。...该状态码与302和303的有着类似的含义,不同之处在于,307状态码并不会指定客户端要用什么样的请求方法请求重定向地址。

    1.3K60

    常见的HTTP状态码有哪些?

    当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。...HTTP状态码的英文为HTTP Status Code。...下面是常见的HTTP状态码: 常用的状态码简述 2XX 一般是请求成功 200 正常处理 204 成功处理,但服务器没有新数据返回,显示页面不更新 206 对服务器进行范围请求,只返回一部分数据 3XX...】 307 与302相同,但不会把POST请求变成GET 4XX 表示客户端出错了 400 请求报文语法错误了 401 需要认证身份 403 没有权限访问 404 服务器没有这个资源 5XX 服务器出错了...500 内部资源出错了 503 服务器正忙

    71020

    基于 Axios 封装一个完美的双 token 无感刷新

    用户登录之后,会返回一个用户的标识,之后带上这个标识请求别的接口,就能识别出该用户。 标识登录状态的方案有两种: session 和 jwt。...想想你常用的 APP,是不是没再重新登录过? 而不常用的 APP,再次打开是不是就又要重新登录了? 这种一般都是双 token 做的。 知道了什么是双 token,以及它解决的问题,我们来实现一下。...token: 那当 token 失效的时候,刷新 token 的逻辑在哪里做呢?...测试下: 我手动改了 access_token 让它失效后,点击 aaa 按钮,发现发了三个请求: 第一次访问 aaa 接口返回 401,自动调了 refresh 接口来刷新,之后又重新访问了 aaa...axios.response.interceptor 里,判断返回的如果是 401 就调用刷新接口刷新 token,之后重发请求。

    1.4K20

    让我大吃一堑的前后分离 web 站模拟登录

    需要打码的纯洁登录框 在请求记录中找到并选中方法为 post 的那条记录就可以查看此请求的详细信息,比如请求地址、请求头和参数。请求详情如下图所示: ?...三、用户权限验证 登录完毕后想执行其他的操作,比如上传(post)数据的话,我应该怎么做?...结果返回的状态码是 401,由于 scrapy 默认只处理 2xx 和 3xx 状态的请求、4开头和5开头的都不处理,但是我们又需要观察401状态返回的内容,这怎么办呢?...我们可以在settings.py中空白处新增代码: """ 状态码处理 """ HTTPERROR_ALLOWED_CODES = [400, 401] 然后在下一个方法中观察response回来的数据...又经过我不断的测试,最终确定了 postman 的请求格式为: ? 输入图片说明 ? 输入图片说明 ?

    1.2K20

    搭建前端监控,如何采集异常数据?

    大家好,我是杨成功。 前两篇,我们介绍了为什么前端应该有监控系统,以及搭建前端监控的总体步骤,前端监控的 Why 和 What 想必你已经明白了。接下来我们解决 How 如何实现的问题。...或者是接口请求出错了,在网络面板内也能查到异常情况,是请求发送的异常,还是接口响应的异常。...前端项目,为了统一处理请求,比如 401 的跳转,或者全局错误提示,都会在全局写一个 axios 实例,为这个实例添加拦截器,然后在其他页面中直接导入这个实例使用,比如: // 全局请求:src/request...在 React 中 和 Vue 一样,用户信息可以直接从状态管理里拿。因为 React 中没有全局获取当前旅游的快捷方式,所以页面信息我也会放在状态管理里面。...如果你也需要前端监控,不妨花上半个小时,按照文中介绍的方法收集一下异常数据,相信对你很有帮助。 文章首发公众号 程序员成功。这个公众号只做原创,专注于前端工程与架构的分享,关注我查看更多硬核知识。

    2K30

    HTTP状态码详解

    状态码 状态消息 含义 实例 400 Bad Request (坏请求) 请求报文中存在语法错误 状态码400 401 Unauthorized(未授权) 客户端需要通过HTTP认证 HTTP协议之基本认证...-401 403 Forbidden(禁止) 请求被服务器拒绝了 状态码403 404 Not Found(未找到) 未找到资源 HTTP协议详解-404 405 Method Not Allowed...(不允许使用的方法) 不支持该Request的方法 状态码405 5XX服务器错误状态码 有时,客户端发送了一条有效Request, Web服务器自身却出错了。...可能是Web服务器运行出错了,或者网站都挂了。 5XX就是用来描述服务器错误的。...状态码 状态消息 含义 实例 500 Internal Server Error(内部服务器错误) 服务器遇到一个错误,使其无法为请求提供服务 状态码500 501 Unauthorized(未授权)

    1.3K50

    了解HTTP的基本历史及知识

    )如何进行沟通 请求示例 1.url -s -v -H "Frank: xxx" -- "https://www.baidu.com" 请求的内容为 GET / HTTP/1.1 Host: www.baidu.com...可以看到请求的前三部分了 如果有请求的第四部分,那么在 FormData 或 Payload 里面可以看到 响应 响应的格式 1 协议/版本号 状态码 状态解释 2 Key1: value1 2 Key2...2xx 表示成功 3xx 表示滚吧 4xx 表示你丫错了 5xx 表示好吧,我错了 状态码查询 状态码 描述 200 请求成功。...所请求的资源必须通过代理访问 400 客户端请求的语法错误,服务器无法理解 401 请求要求用户的身份认证 402 保留,将来使用 403 服务器理解请求客户端的请求,但是拒绝执行此请求 404 服务器无法根据客户端的请求找到资源...通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面 405 客户端请求中的方法被禁止 500 服务器内部错误,无法完成请求 501 服务器不支持请求的功能,无法完成请求 502 充当网关或代理的服务器

    47530

    HTTP 状态码

    状态码 状态码是来告诉客户端,发生了什么事情。状态码为客户端提供了一种理解事务处理结果的便捷方式。...原因短语是状态码的可读版本,应用程序开发者将其传送给用户,用于说明在请求间发生了什么情况。...五大类 可以通过三位数字代码对不同状态码进行分类 200 到 299 之间的状态码表示成功 300 到 399 之间的代码表示资源已经被移走了 400 到 499 之间的代码表示客户端的请求出错了 500...到 599 之间的代码表示服务器出错了 状态码 整体范围 已定义范围 分类 1XX 100~199 100~101 信息提示 2XX 200~299 200~206 成功 3XX 300~399 300...通常,服务器会包含一些首部,以便客户端弄清楚为什么请求无法满足 407 Proxy Authentication Required 与 401 状态码类似,但用于要求对资源进行认证的代理服务器 408

    2.7K00

    小结HTTP状态码

    image.png 作为一个web开发工程师,我们平时都会和诸如200, 304, 404, 501等状态码打交道,那么它们是什么意思呢?...今天,我们来聊聊~ 什么是HTTP状态码 HTTP状态码是服务端返回给客户端(因为这里是web开发,这里的客户端指浏览器客户端)的3位数字代码。 这些状态码相当于浏览器和服务器之间的对话信息。...备注:在web开发的工作中,我们都会使用封装好的库进行接口请求,而且浏览器的控制台网络中也不会出现这类状态码的提示(我没看到过?),所以这一大类基本不会接触到,了解一下即可。...备注:307和303已经替代了历史上的302状态码,现在看到的临时重定向的状态码是307。详细内容可到维基百科上查看。 4xxs状态码 401 Unauthorized:这意味着你的登录凭证无效。...比如后端同学写错了model啥的~ 503 Service Unavailable:服务器没有准备好处理请求。常见的原因是服务器因维护或重载而停机。

    1.1K20

    Spring Boot 中如何实现 HTTP 认证?

    松哥手把手带你入门 Spring Security,别再问密码怎么解密了 手把手教你定制 Spring Security 中的表单登录 Spring Security 做前后端分离,咱就别做页面跳转了!...HttpBasic 最大的优势在于使用非常简单,没有复杂的页面交互,只需要在请求头中携带相应的信息就可以认证成功,而且它是一种无状态登录,也就是 session 中并不会记录用户的登录信息。...大家可以看到,在请求头中,多了一个 Authorization 字段,该字段的值为 Basic amF2YWJveToxMjM=, amF2YWJveToxMjM= 是一个经过 Base64 编码之后的字符串...我们再来稍微总结一下 HttpBasic 认证的流程: 浏览器发出请求,说要访问 /hello 接口。 服务端返回 401,表示未认证。...过滤器的源码比较长,我这里就不贴出来了,一个核心的思路就是从前端拿到用户请求的摘要信息,服务端也根据一直的信息算出来一个摘要,再根据传过来的摘要信息进行比对,进而确认用户身份。

    1.2K30

    手给 Safari 提了一个Bug,让我意外收获了这些新知识

    这里还发现了一个有意思的细节:Safari 在发起重定向请求时,虽然没有带上 Authorization 请求头,但是会带上 cookie,这也说明了为什么在改造为 JWT 之前,Safari 能正常使用的原因...在 Chrome 中,具体请求如下(Chrome 中请求和重定向是 2 条独立的记录): 猜测可能 我当时的场景,后端返回的状态码是 301,开始以为是各浏览器针对 301 响应码的处理逻辑不一样。...status 的值是 0,headers 是个空对象 感觉很奇怪,但是又看了看上面对 manual 的定义,好像明白了 归零/空状态 是什么意思 。 然后又开始了探索之路。...另外一个需要注意的点是:最好根据浏览器做一层判断,如果是 Safari,则将 redirect 设置为 manual,否则不进行处理。...因为我的场景只是单纯的把请求地址写错了,导致后端重定向到正确的地址。所以只需要把 URL 改一下即可。

    1.5K20

    RESTful API接口设计规范与最佳实践

    当一个查询的结果为空的时候,为什么有的接口设计会返回异常(HTTP状态码404或其他),有的则是会返回请求成功(HTTPS状态码200),但是返回结果是空数组或者null等表示结果为空的标识?...我的建议是如果你能做主,而且觉得有必要,就严格遵循,反之,领导说就啥吧。 Part3为什么接口是否请求成功,HTTP状态码永远只会是200?...这时候前端开发者在做统一异常处理的时候,先按状态码做一层大范围的分支处理,再有针对性的对这个状态码类型下的某些错误码做特殊处理即可。...问题: 当一个查询的结果为空的时候,为什么有的接口设计会返回异常(HTTP状态码404或其他),有的则是会返回请求成功(HTTPS状态码200),但是返回结果是空数组或者null等表示结果为空的标识?...但是这是建立在业务场景规定,查询结果为空的时候属于异常的前提上。 1返回HTTP状态码 200 当我们查询一个资源但是结果为空,到底要不要把本次请求视为一个404的异常是取决于业务场景。

    1.2K10

    Requests库(五)接口返回状态码

    接口返回状态码。 ---- 接口请求,返回的状态码肯定是不一样的,我们需要提前处理,不然就会报错。不信你可以看看下面代码的执行。...那么我们如果按照正常的去处理,而不是事先去处理接口的状态码。我们的接口可能请求就会出错了。那么我们应该先知道状态码有哪些,才可以更好的来判断? 状态码一共有5种。...使用GET请求重定向 400 Bad Request 客户端请求的语法错误,服务器无法理解 401 Unauthorized 请求要求用户的身份认证 402 Payment Required...为防止客户端的连续请求,服务器可能会关闭连接。...我们只需要掌握常用的即可。那么我们回到我们的示例种,看我们应该如何处理呢。 这样很简单,我们只需要对常见的这些代码进行处理即可。我一般会这么处理。

    4.4K10
    领券