【问题标题】:Serving angular with razor to achieve cookie based authentication使用 razor 服务 Angular 以实现基于 cookie 的身份验证
【发布时间】:2020-02-23 17:06:53
【问题描述】:

我正在使用 Angular 7、Asp.net core 2、Asp.net Identity、IdentityServer4 开始一个新项目。

简单来说,我的项目架构如下:

  • 一个 Web API 项目(资源服务器)
  • 数据访问层工程(c#工程库)
  • 使用 Asp 身份的身份服务器 4
  • 还有一个 Angular 7 客户端,这个项目是使用两个 cli 命令生成的:“dotnet new angular”,用于生成后端。和“ng new”生成前端代码。

所以,由于 Angular 项目有后端,出于安全原因,我选择了混合流程。

我的目标是使用 Angular 客户端后端通过 cookie 对 Angular 客户端用户进行身份验证。我使用 MVC 客户端轻松完成了这项工作,但我仍然无法弄清楚如何使用 Angular 客户端实现相同的目标。

我目前的想法是使用两种操作来提供 Angular,一种为匿名用户呈现 razor cshtml 页面,另一种为“授权”用户呈现,但我仍然不确定这是否可以实现。

这是一个好方法还是有更好的方法?

【问题讨论】:

    标签: c# asp.net-mvc angular identityserver4


    【解决方案1】:

    我最近开始了一个类似的项目,并考虑如何进行身份验证/授权。

    最终将 Angular 前端和 AspNetCore 后端视为两个相似的项目(即使它们在同一个项目下)。您可以将一些 oidc 库用于 Angular(如 this for example),并且您的 Angular 部分基本上是使用 Hybrid 流的 js 客户端(最好)。如果用户尝试访问受保护的资源并处理令牌回调并执行 cookie 身份验证,您可以将 Angular 路由器和路由保护与 oidc 库之一结合使用,以自动将用户重定向到身份提供者。

    您在 AspNetCore 中的后端部分将变成简单的 ApiResource,您的 Angular 客户端必须被允许访问(在 AllowedScopes 中)并且只关心向您的 Angular 客户端提供数据(减去事实AspNetCore razor 引擎服务于初始 Angular AppComponent)。它根本不关心监护人的任何路由,只关心验证您的 Angular 客户端将注入到此后端 Api 的 Http 调用中的不记名令牌。

    【讨论】:

    • 最后也采用了相同的设置,非常感谢您的意见
    猜你喜欢
    • 2018-06-30
    • 1970-01-01
    • 2020-10-08
    • 2016-11-04
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多