java 与SAP Hybris集成:将浏览器会话与发起请求的用户相关联

vwoqyblh  于 2023-05-21  发布在  Java
关注(0)|答案(1)|浏览(121)

我正在使用SAP Hybris,我想使用Kakao的SDK将Kakao Social Login集成到我的登录页面中。
用例如下:当用户尝试登录www.storefront.com/login/的登录页面时,他们点击Kakao社交登录按钮。这将打开一个Kakao弹出窗口,用户可以在其中输入他们的用户名/密码。如果一切正常,Kakao会在回调中直接向我们的后端发送一个代码。然后,我使用这段代码检索access_token以进行getUserInfo调用。检索到信息后,我将向用户显示一个渐进式分析弹出窗口。
在我的本地环境中进行测试时,一切正常,用户信息正确地显示在渐进式分析弹出窗口中。然而,当在测试服务器上进行测试时,如果两个用户A和B同时进行测试,则用户A在渐进式分析中看到用户B的信息,反之亦然。
所以,我想知道回调是否没有识别发起请求的用户,并随机将回调发送给两个用户中的一个。如果是这样,我如何确保这个回调的结果被发送给正确的用户?
下面是我向Kakao公开的端点:

@RequestMapping(value = "/callback/kakao" , method = RequestMethod.GET)
public String callback(@RequestParam final String code,  final HttpServletRequest request, final HttpServletResponse response,Model model) {
String path = configurationService.getConfiguration().getString("redirect.uri.kakao");
String accessToken = facade.getAccessTokenFromKakao(code, getFullRequestUrl(request,path));

KakaoProfile profile = facade.getUserInfo(accessToken);
        
populateData(model, profile)

//the response that I must return as response I fill the profile in the model with the necessary info inside populatedata méthod.
return ControllerConstants.Pages.RESPONSE;
}

请告诉我回调是否无法识别发起请求的用户,以及我如何确保正确的用户收到回调的结果。
以下是您在结果中返回的“响应”页的内容:

<%@ page trimDirectiveWhitespaces="true" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>   
<%@ taglib prefix="molecules" tagdir="/WEB-INF/tags/responsive/common/molecules" %>
<%@ taglib prefix="atoms" tagdir="/WEB-INF/tags/responsive/common/atoms" %>
<%@ taglib prefix="ycommerce" uri="http://hybris.com/tld/ycommercetags" %>

<script>
const progressiveProfilingHtml = "<spring:escapeBody javaScriptEscape="true"> 
<pages:progressive-profiling/></spring:escapeBody>";

window.addEventListener('beforeunload', () => { 
    window.opener.postMessage(progressiveProfilingHtml, '*'); 
});
window.addEventListener("DOMContentLoaded", (event) => {
    window.close();
});
</script>

我返回已经用模型中的数据填充的HTML。
最后,我关闭Kakao窗口,在我的网站上显示渐进式分析的HTML。

u91tlkcl

u91tlkcl1#

检查服务器上使用的缓存方法可能是缓存问题。并尝试用多个请求命中回调端点并比较结果。

相关问题