我有Spring座后端和角前端。
身份验证是使用请求JSON正文中带有用户名和密码的“/登录”URL的POST请求来执行的(我使用基于表单的身份验证)。REST后端回复OK代码。一切都很好,我可以执行来自前端的其他需要身份验证的请求。
但是前端需要知道身份验证用户的角色是什么,以便它可以显示正确的视图/记录。我们从哪里可以在前端得到这个角色?我们从身份验证中得到的唯一响应是OK,这对于REST来说很好。
我们可以通过执行GET请求来获取用户信息,但是我们没有用户id,只有用户名。
所以问题是 - REST 从只有用户名的前端获取角色(或其他用户信息)的正确方法是什么?
作为一种解决方法,我可以在后端创建使用用户名而不是id的新请求,或者我可以将用户id添加到身份验证响应中。但我不确定从REST的角度来看这是正确的方法。
在对用户进行身份验证时从服务器获取用户信息。在成功的用户身份验证时传递用户详细信息。
有两种做这件事的方法。
1) 从服务器成功身份验证后,使用用户名对服务器再进行一次<code>$http</code>调用,您可以从服务器逻辑中获取详细信息,该服务器逻辑将获取并存储结果到<code>$rootScope</code>中。此信息将通过应用程序提供。
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..
}
希望这能让你了解如何实现你想要的结果。
不能重写HTTP方法。因此,如果您计划使用相同路径的不同查询参数编写GET调用,那么这是不允许的。您需要编写两个GET路径。
例如
GET/users/userid/{ id } GET/users/username/{ name }
在第二次调用中,您可以添加所需的逻辑,以便在第二个调用中获得角色。
获取环境相关信息 var info = Tida.appinfo; 返回 json 格式: { "engine": "tmm", "name": "tmall", "engineVer": "4.9.2", "ver": "4.9.2" } 比较全面的环境相关判断 lib.env.params - url中search参数的对象,例如有ttid参数可以通过lib
我有一个Java服务器应用程序,它通过TLS从GRPC客户端获取数据并在服务器上处理。现在我想使用多个客户端。要向客户端分配接收到的事件,我想读取客户端证书并使用证书的DN分配事件。如何获取客户端证书? 我发现这个构建服务器:https://github.com/grpc/grpc-java/blob/master/SECURITY.md#mutual-tls 然后你应该实现一个服务器拦截器 }
Iv'e一直在使用本指南:https://spring.io/guides/gs/rest-service要创建RESTFul web服务,我面临的问题是,我不知道如何获取客户机IP地址等信息,使用此API是否可能? 谢谢
我正在从NVP/SOAP PayPal API集成转向更新的REST API。 我以前的网站代码使用的是“快速结帐”流程。 网站发起付款,用户被重定向到贝宝; 用户登录并确认发起的支付; 用户被重定向到该网站,该网站调用PayPal以获得用户个人信息以保存在交易记录中(例如姓名、地址、...); 我的意思是,在onAuthorize回调方法中,我确实有用户授权支付的paymentID和payerI