使用asp .net core 3 API登录到Angular SPA,而无需在SPA外部进行重定向

时间:2019-09-30 09:28:17

标签: angular asp.net-core .net-core asp.net-core-3.0

我一直在研究制作带有点网核心3后端的Angular SPA,以进行API调用,我想通过登录来保护API和SPA。

在我发现的所有示例中(例如新的核心3 Angular模板and this),代码均使用Identity Server。对于这个例子,我没有任何问题,因为在每个示例中,登录过程都会离开SPA进行身份验证/登录,然后重定向回SPA。

我不想离开SPA。我想从SPA内做所有事情,因为这对我来说是最好的用户体验。在Microsoft模板示例中,您将重定向到另一个页面,SPA菜单消失了。如果以这种方式进行操作,则必须维护两个单独的菜单系统。

所以我的问题是,如何使用Angular 7 +,asp.net core 3登录,并且没有从SPA离开的任何类型的重定向。如果我不能使用Identity Server进行此操作,那么还有其他选择吗?

更新-我通过编辑SPA应用程序以及默认标识过程如何工作来解决此问题,以便在该应用程序中拥有一个登录表单和一个注册表单。然后安静地进行呼叫,并在后台将登录重定向到IS,而无需用户离开页面。

2 个答案:

答案 0 :(得分:0)

使用JWT(JSON Web令牌)。这是SPA身份验证的理想解决方案。

.NET核心方面:

角度SPA侧面:

  • 使用用户提供的凭据(即电子邮件和密码)调用新创建的API,并存储其提供的令牌。
  • 对于每个对任何受保护API的HTTP调用,HTTP请求都需要使用Bearer schema随JWT令牌提供其授权标头。

答案 1 :(得分:0)

您可以在SPA中实现login / logout / etc并使用Identity Server。 通过在AddIdentityServer的选项中设置相应的urls,将SPA重定向到SPA。 尝试逐一替换此sample中的默认页面。您还必须修改controllers