当前位置: 首页 > 知识库问答 >
问题:

RESTful登录失败:返回401或自定义响应

华衡
2023-03-14

这是一个概念问题。

我这样问的原因是,有些其他RESTful服务使用401处理错误的凭据,即使您只是询问凭据是否有效。然而,我对401响应的理解是,它们代表了一个没有有效凭据的资源。但登录资源应该对任何人都可以访问,因为登录资源的全部目的是告诉您凭据是否有效。

换句话说,在我看来,像这样的请求:

myservice.com/this/is/a/user/action 

如果提供了错误的凭据,则应返回401。而是这样的请求:

myservice.com/are/these/credentials/valid

关于这件事,我想听听一些合理的意见。处理这件事的标准方式是什么,处理这件事的标准方式在逻辑上是否恰当?

共有1个答案

巫朝明
2023-03-14

首先。401是当登录失败时发送的正确响应代码。

401未授权类似于403禁止,但专门用于需要身份验证且身份验证失败或尚未提供时。响应必须包含一个WWW-Authenticate头字段,其中包含适用于所请求资源的质询。

您对myservice.com/are/these/credentials/valid发回401的困惑,我认为是基于这样一个事实,即在REST中执行布尔请求通常会因RESTful约束而出错。每个请求都应该返回一个资源。在RESTful服务中做布尔问题对RPC来说是一种轻而易举的选择。

现在我不知道你看到的服务是如何运作的。但解决这一问题的一个好方法是拥有一个类似Account对象的东西,您可以尝试获取它。如果您的凭据是正确的,您将获得帐户对象,如果您不想浪费带宽只是做一个“检查”,您可以在相同的资源上做一个头。

Account对象也是存储所有讨厌的布尔值的好地方,否则为这些值创建单独的资源会很棘手。

 类似资料:
  • 问题内容: 我已经按照以下Flask-RESTful文档定义了自定义响应格式。 我有以下资源类。 我希望函数返回类型,函数返回默认值。 我该怎么做呢?关于这一点,文档不是很清楚。 问题答案: 使用哪种表示方式取决于request,标头类型。 的请求通过使用你的函数来响应。 如果你需要API方法中的特定响应类型,则必须使用返回“预烘焙”响应对象:

  • 问题内容: 我在这里问了有关最新的Spring框架和基于代码的配置的问题 initializer MVC config security config security initializer custom login 但是,现在我有关于自定义登录的新问题。 发布到j_spring_security_check时,我会收到http 302。 我正在请求/,但登录后仍保留在登录页面上。 因为我使用的

  • 有人能告诉我一些资源吗?这些资源可以指导我如何实现一个定制的Spring Security身份验证,首先在ldap服务器上测试找到的用户的凭据,如果该用户的ldap用户名字段存在,如果无法进行身份验证(可能是因为ldap用户名不存在,或者给定的密码没有对服务器上的用户名进行身份验证),则会尝试根据本地数据库中散列的用户本地密码进行身份验证。 非常感谢。

  • 我正在学习Spring Boot。我创建了一个具有Spring Boot安全性的示例Spring Boot Web应用程序,它运行良好。 现在我想在同一个Web应用程序中添加Rest Webservice功能。 问题:当我尝试访问任何API时,我得到的响应是登录。jsp 要求:我希望不需要JSON响应身份验证和授权 要实现这一目标,我需要做哪些更改 Web安全配置:

  • 问题内容: 我无法摆脱这个错误。我已经通过SSMS添加了“ NT AUTHORITY \ NETWORK”用户以及使用此线程作为参考的相关角色:用户“ NT AUTHORITY \ NETWORKSERVICE”的登录失败 我试图通过Windows服务建立数据库连接。在调试模式下,数据库连接可以正常工作。当我实际尝试运行已安装的服务时,便会出现此错误。 这是我来自app.config的连接字符串:

  • 所以阅读Sybase的实用手册,我发现我可以设置我的 localhost服务器使用dsedit.exe.。 然后我尝试在Aqua Data Studio中注册我的localhost服务器,方法如下: 但是我得到了以下错误: 管理员用户名是什么 我在哪里/如何设置它?? 根据文档,它说默认的系统管理员ID是“sa”,没有密码。。 (http://infocenter.sybase.com/archi