如何在 spartacus 中手动验证 user/client?

How to manually authenticate user/client in spartacus?

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

所以我的问题是:在 spartacus 中手动验证 client/user 的最佳做法是什么?一些代码示例会很棒 :)

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

不确定 "manually" 身份验证的确切含义。

在 spartacus 中,如果您想对客户端(应用程序)进行身份验证,这非常简单。 client-token.interceptor 设置为捕获包含特定 header 的请求并将客户端令牌添加到请求中。如果 Spartacus 在内存中没有令牌,它将请求它。

为此,您应该使用添加 USE_CLIENT_TOKEN 到您的请求 header。这是一个例子:

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

希望对您有所帮助!

在客人结账时,您需要做一些事情。

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

checkout: { guest: true }

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

我们通过分配给购物车的电子邮件识别访客结账。否则,结帐组件将表现得像正常结帐一样。因此,有人要求用户地址或付款。

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

并且在客人结账时设置地址和付款的调用不必经过授权(您可以在演示客人结账时看到这些调用在 Authorization header 中未定义)。

对于客户端授权,在 https://whosebug.com/a/60821200/4666829

中有很好的描述