客户端REST认证后如何获取用户信息?

How to get user information after REST authentication on client side?

我有 Spring REST 后端和 Angular 前端。

使用 POST 对“/login”URL 的请求执行身份验证,请求 JSON 正文中包含用户名和密码(我使用基于表单的身份验证)。 REST 后端回复 OK 代码。一切都很好,我可以从需要身份验证的前端执行其他请求。

但是前端需要知道经过身份验证的用户的角色是什么,以便它可以为其显示适当的 view/rote。我们在哪里可以在前端获得这个角色?我们从身份验证中得到的唯一响应是正常的,这对 REST 没问题。

我们可以通过对“/users/[user_id]”执行GET请求来获取用户信息。但是我们没有用户id,只有用户名。

所以问题是 - REST 从只有用户名的前端获取角色(或其他用户信息)的正确方法是什么?

作为解决方法,我可以在后端创建新的请求,该请求采用用户名而不是 ID,或者我可以将用户 ID 添加到身份验证响应中。但我不确定从 REST 的角度来看这是正确的方法。

您不能覆盖 HTTP Methods.So,如果您计划使用相同路径编写具有不同查询参数的 GET 调用,则 allowed.You 不需要编写两个 GET 路径。

例如

获取/users/userid/{id} 获取 /users/username/{名称}

并且在第二次调用中,您可以添加所需的逻辑以在第二个调用中获得角色。

有两种方法。

1) 从服务器成功验证后,使用用户名再对服务器进行一次 $http 调用,您可以从中从服务器逻辑中获取详细信息,该逻辑会获取并存储结果 $rootScope.此信息将在整个应用程序中可用。

2) 当您对用户进行身份验证时,如果用户有效,则获取他的详细信息并将其存储在对象中。

现在在您的服务器逻辑中返回响应时,您可以像下面那样做

response.setHeaders("User",userDetilsObj);

注意:响应是一个 HttpServletResponse 对象。

如您所说,请求完成后,我们将收到状态 OK 响应,即 200。要在 JS 端访问用户详细信息,请遵循以下代码

if(response.status == '200/OK'){
   $rootScope.user = response.getHeaders().User;//In this object all the user details set at server side are available now..
}

希望这能让您了解如何实现您想要的结果。

认证时从服务器获取用户信息user.Pass用户认证成功时的用户详细信息。

在评论中与@JBNizet 讨论了这个问题后,我决定将 REST 端点从“/users/:user_id”更改为“/users/:user_name”。