我一直在研究制作带有点网核心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,而无需用户离开页面。
答案 0 :(得分:0)
使用JWT(JSON Web令牌)。这是SPA身份验证的理想解决方案。
.NET核心方面:
Authorize
属性。角度SPA侧面:
答案 1 :(得分:0)
您可以在SPA中实现login / logout / etc并使用Identity Server。
通过在AddIdentityServer
的选项中设置相应的urls,将SPA重定向到SPA。
尝试逐一替换此sample中的默认页面。您还必须修改controllers。