因此,我们在后端( be )和前端(FE)上都有SOA (在需要时,分离的微前端作为组件加载到前端应用程序中,因此它们之间的内部进程调用是可能的,不像后端服务那样必须执行进程间调用)。
实际上,我们有一个Auth
服务和一些其他Bananas
服务。在FE上,我们也有一个auth
微前端和任何其他的bananas
微前端。假设用户的access token
已过期,并向/bananas/create
提出请求。当然,我们的每个BE服务都验证在每个请求上接收到的访问令牌,如果无效,返回401
。我们希望实现refresh token
功能(刷新令牌将与每个请求一起与访问令牌一起传递)。
现在的问题是:如果收到一个带有过期令牌的请求:
Bananas
服务在看到令牌过期时,调用Auth
服务来验证refresh token
并接收新的令牌,然后执行实际的香蕉业务并使用令牌对+实际的香蕉数据进行响应。一通电话。或者..。Bananas
是否仍应返回401
,然后香蕉微前端委托到auth微前端调用Auth
服务以获取新令牌,然后将其返回到香蕉微前端,并使用有效的令牌对Bananas
服务进行新的调用?这是我和我的同事之间的设计难题。我的意思是,我不想有三个请求-响应的电话来回。他认为,Bananas
服务应该始终只返回其响应对象中的香蕉数据,而不应该在返回令牌对时出现这种情况。
在我看来,我们的观点都是正确的,但我们没有经验和知识来决定哪个更优先/哪个是更好的设计。
发布于 2018-05-03 23:32:48
2.
前端拥有auth,所以前端应该管理它。就我个人而言,我会有一些较薄的前端层来编排组件(并处理所有组件所需的用户/身份验证/授权)。但是,您的同事是对的,API应该为每个调用返回相同的数据类型。请求/响应/请求将不时发生(如果适用,还会出现乐观并发;以及瞬态网络类型的错误重试),并且可以通过提前刷新令牌来缓解。
https://softwareengineering.stackexchange.com/questions/370425
复制相似问题