现在我正在尝试在 spartacus 上创建概念证明。这个概念是为匿名客户手动检查购物车。我来到了一个点,我想知道是否可以使用 spartacus 手动验证客户端或用户。
所以我的一般问题是:在 spartacus 中手动验证客户端/用户的最佳实践是什么?一些代码示例会很棒:)
提前致以最诚挚的问候和感谢
现在我正在尝试在 spartacus 上创建概念证明。这个概念是为匿名客户手动检查购物车。我来到了一个点,我想知道是否可以使用 spartacus 手动验证客户端或用户。
所以我的一般问题是:在 spartacus 中手动验证客户端/用户的最佳实践是什么?一些代码示例会很棒:)
提前致以最诚挚的问候和感谢
不确定“手动”身份验证的确切含义。
在 spartacus 中,如果您想对客户端(应用程序)进行身份验证,这非常简单。client-token.interceptor
设置为捕获包含特定标头的请求并将客户端令牌添加到请求中。如果 Spartacus 在内存中没有令牌,它将请求它。
为此,您应该使用添加USE_CLIENT_TOKEN
到您的请求标头。这是一个例子:
const url: string = '/url';
let headers = new HttpHeaders({
'Content-Type': 'application/json',
});
// The line bellow add the token to the header
headers = InterceptorUtil.createHeader(USE_CLIENT_TOKEN, true, headers);
return this.http
.post<User>(url, { data: data }, { headers });
至于用户身份验证,只要用户在 Spartacus 中进行身份验证,就会将用户令牌添加到所有请求中。没有“自动”机制来获取它。令牌是通过登录获取的。
希望这可以帮助!
在客人结账的情况下,您必须做一些事情。
首先是在配置中启用访客结帐:
checkout: { guest: true }
那么结帐的第一步应该是/checkout-login
页面。用户需要提供分配给特定购物车的电子邮件地址。
我们通过分配给购物车的电子邮件来识别客人结帐。否则,结帐组件的行为就像正常结帐一样。因此,需要用户地址或付款。
如果您想要一页上的所有内容(设置电子邮件地址、交付、付款等),您必须覆盖结帐组件的默认实现,以避免登录用户的所有这些调用。
并且在客人结账的情况下设置地址和付款的电话不必经过授权(您可以在演示客人结帐时看到这些电话在Authorization
标题中未定义)。
对于客户端授权,它在https://stackoverflow.com/a/60821200/4666829中有很好的描述