问题标签 [asp-net-core-spa-services]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
angular - 如何解决管理单页应用程序和.NET Core WebAPI 授权的一致性问题?
我们目前正在开发一个具有以下架构的 Web 应用程序。
- 基于 Angular 7 的单页应用程序
- 基于 .NET Core WebAPI 的后端。
我目前正在考虑涵盖此类应用程序的身份验证和授权要求的最佳实践。
客户端授权
- SPA 登录后采用 JWT。
- 路由的授权将由 Angular 中的路由保护处理。例如,用户具有
reportviewer
角色,用户将被允许查看与报表相关的组件的路由。 - 菜单项将根据 JWT 上的信息可见。例如,用户具有reportviewer 角色,用户将看到与报表相关的菜单项。
服务器端
JWT 将包含一些授权信息。(例如角色声明)授权属性将用于 WebAPI 的授权。
我开发了一个用户编辑页面来定义用户并分配所需的角色。
问题
开发人员可能会不一致地定义菜单项、路由保护和 WebAPI 的授权。我如何构建一致的授权框架来解决这种应用程序的这个问题?
提前致谢。
依山
angular - 如何从服务器端构建与 Angular 路由对应的路由?
我有一个使用 Angular 7 和 ASP.net Core 2.2 构建的网站。我制作了标准的“EmailConfirmed”、“ResetPasswordRequest”和“ResetPasswordConfirmed”功能。所有这些都在 app.route.ts 中定义了它们的路由,如下所示:
现在在服务器端,我必须发送一封带有适当模板和链接的电子邮件。
我制作的代码运行良好,但回调 URL 必须与角度路由相对应,而这里不是这种情况。
我想知道为这种情况构建回调 url 的最佳方式
c# - 无法在 home.cshtml 中引用 Angular Cli 生成的脚本和 css 而不是 .NET Core Angular cli spa 模板中的默认 index.html
我遇到了使用 Visual Studio 2017 将 .NET core 2.2 模板中的现有模板从 Angular 4.0.3 升级到 Angular 6.1 的问题。
以下是详细信息
视觉工作室 2017
带有 Angular 6.1.0 的 Angular Cli
带有 .NET Core 2.2 的 Angular spa 模板
根据默认模板结构https://github.com/aspnet/AspNetCore/tree/master/src/ProjectTemplates/Web.Spa.ProjectTemplates/content/Angular-CSharp它也使用默认 index.html。
我在引用生成的 css 和 js 文件时遇到了一些麻烦。我需要为 Home 控制器使用 cshtml 文件,而不是模板附带_Layout
的默认值。将包含 Angular 项目的根组件。但是我不确定如何在cshtml页面中链接模板在运行时生成的css和js文件。当我们按 F5 启动应用程序时,这些 css 和 js 文件由 webpack 生成,因为它创建了 Angular cli 服务器 ( ) 的单独实例,但这些文件在解决方案中不可见。index.html
Home.cshtml
ng serve
同样,我需要dotnet publish
在生产构建和部署期间提供这些文件的链接。(ng build --prod)
.
你能帮忙吗,因为我遇到了将 .NET core 2.2 模板中的现有模板从 Angular 4.0.3 升级到 Angular 6.1 的问题。早期的模板使用webpackmiddleware 和热重载来单独生成这些文件,但现在它是 Angular cli 的一部分.
对于设置,但我的要求是在 Razor 视图页面/_Layout 中引用它们而不是默认的 index.html
angular - 如何修改 csproj PublishRunWebpack 以包含来自外部目录的静态文件
我从 ASP.NET Core Web 应用程序 -> Angular SPA 开始,但我已将 Angular 应用程序移至 csproj 之外的单独存储库。
所以我的文件夹结构如下所示:
现在我想修改 csproj 以便发布副本frontend/dist/**/*.*
到$(outputDirecory)/ClientApp/dist/**/*.*
我应该如何修改 PublishRunWebpack 目标以复制这些文件:
angular - 如何使用 Angular 7 表单在 ASP.NET Core 上应用 Antiforgery?
这似乎是一个简单直接的问题,但是当您的 API (.NET Core) 具有完全分离的 UI (Angular) 时,您如何仍然在 API 中应用防伪令牌验证?您是否必须向某个 API 端点发出 GET 请求才能以某种方式取回 cookie/令牌,还是有其他方法可以实现这一点?
我什至不确定我所提议的是否是好的做法,但如果用户直接导航到表单所在的页面,我真的不知道如何在不进行调用的情况下获取 cookie 值。
我还尝试在上一页上取回实际令牌并使用标准令牌/cookie 名称,但是随后的 httpclient(角度)调用似乎不包括令牌,并且根据文档应该自动拾取它?
reactjs - 静态文件、aspnet 核心 AddSpaStaticFiles roothpath、SPA 模板的 404 错误
我使用 asp.net core react spa 模板创建了一个反应项目。一切似乎都很好,但是当我在 IIS 中部署应用程序时,它被部署为默认网站下的应用程序。当我尝试访问该站点时,索引文件即将到来,但静态文件给出 404。
我发现的一种解决方案是在 iis 中将 PUBLIC_URL 设置为应用程序名称并构建应用程序然后部署。但是,asp.net核心方面还有其他替代解决方案吗?像设置 rootPath
c# - ASP.Net Core 2.1 Vue.JS SPA - Cookie Auth 和 Vue.JS 开发服务器
我有一个应用程序,它本质上是一个位于 dotnet core 2.1 应用程序中的 Vue.JS SPA,提供 API 服务。当我使用当前的 Startup.cs 配置启动应用程序时,它会启动 3 个窗口。这些窗口中的 1 个是实际的 ASP.Net Core 应用程序根目录 - 其他 2 个(不要问我为什么 2 个)是您在执行时获得的 Vue.js 开发服务器的副本npm run serve
。
我遇到的问题是,虽然如果我使用在第一个窗口中运行的实例,身份验证工作正常,但如果我尝试使用 Vue.JS 服务器窗口登录,那么我只会得到 401。
我的第一个想法是 CORS,所以我设置了一个 CORS 策略,纯粹是为了在开发模式下运行,但这并没有解决问题。在没有 Vue.JS 服务器的情况下进行开发实际上是不可行的,因为没有它我没有 HMR,并且每次进行设计更改时都需要重新加载整个应用程序状态。
我之前已经使用 .net Framework 4.6 API 后端进行了此设置,完全没有问题,所以我只能认为这是一种现代安全增强功能,它阻止了我需要配置为在开发中关闭的代理或其他东西。
欢迎任何关于我如何解决这个问题的建议。
这是我当前的 Startup.cs 配置...
...和配置服务...
...并且身份在这里与 EF 配置混为一谈...
我的 vue.config.js 看起来像这样......
angular - AspnetCore SpaServices 错误,因为当我键入 dotnet run 它总是给我这个错误
我已经安装了 AspNetCore SDK 和 nodejs npm 但是有一个错误我想回答它
c# - 如何让 ASP.NET Core DI 获得 Simple Injector 解决的依赖关系?
在 ASP.NET Core Web api 项目中,我使用的是 Simple Injector 和 JwtBearer 令牌。我已经定义了我的自定义令牌事件处理程序类并将其绑定到 ASP.NET Core 机制,如下所示:
这是我的班级令牌事件:
我使用 Simple Injector 作为我的 DI 容器
IUserManager
连同它的所有依赖项都在 Simple Injector 中注册。如果我尝试传入一个异常IUserManager
,TokenAuthenticationEvents
则会引发 ASP.NET Core 无法解析IUserManager
。所以我的问题是
如何告诉 ASP.NET Core DIIUserManager
从 Simple Injector 获得解决方案?.