1

现在我正在尝试在 spartacus 上创建概念证明。这个概念是为匿名客户手动检查购物车。我来到了一个点,我想知道是否可以使用 spartacus 手动验证客户端或用户。

所以我的一般问题是:在 spartacus 中手动验证客户端/用户的最佳实践是什么?一些代码示例会很棒:)

提前致以最诚挚的问候和感谢

4

2 回答 2

3

不确定“手动”身份验证的确切含义。

在 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 中进行身份验证,就会将用户令牌添加到所有请求中。没有“自动”机制来获取它。令牌是通过登录获取的。

希望这可以帮助!

于 2020-03-23T20:38:22.993 回答
2

在客人结账的情况下,您必须做一些事情。

首先是在配置中启用访客结帐:

checkout: { guest: true }

那么结帐的第一步应该是/checkout-login页面。用户需要提供分配给特定购物车的电子邮件地址。

我们通过分配给购物车的电子邮件来识别客人结帐。否则,结帐组件的行为就像正常结帐一样。因此,需要用户地址或付款。

如果您想要一页上的所有内容(设置电子邮件地址、交付、付款等),您必须覆盖结帐组件的默认实现,以避免登录用户的所有这些调用。

并且在客人结账的情况下设置地址和付款的电话不必经过授权(您可以在演示客人结帐时看到这些电话在Authorization标题中未定义)。

对于客户端授权,它在https://stackoverflow.com/a/60821200/4666829中有很好的描述

于 2020-03-24T07:13:24.737 回答