我有一个关于ASP.NET Core 2中的身份验证的问题:调用app.UseAuthentication()究竟是什么?
这是一个基本的先决条件,以便我可以实现我的自定义身份验证逻辑吗?我已经看过UseAuthentication的实现以及实际的中间件AuthenticationMiddleware的实现,但说实话,我不明白它实际上在做什么以及为什么它是必要的.
换句话说:
如果我没有调用UseAuthentication()就好了,我仍然对AuthenticationMiddleware实际上正在做什么感兴趣.所以,如果你知道如果你能为我解释,我会非常感激.
使用侧边菜单和标签时,我遇到了离子及其历史堆栈的麻烦.
我在这里创建了一个plunker示例:http://embed.plnkr.co/XK6seY9mDypTW6GcsCpj/preview
要解决问题的步骤:
问题是离子本身在导航中没有显示后退按钮.我创建了一个自己的后退按钮,调用$ ionicGoBack($ event)来查看离子是否具有历史堆栈.但是当单击此按钮时,您将看到离子不会导航回主列表,而是保留在详细信息页面的常规数据选项卡上.
谁能告诉我这是什么问题?我知道标签有自己的历史堆栈,但标签应该知道它的祖先,还是我错了?
非常感谢您的帮助!
最好的祝福
示例代码可在https://github.com/baumgarb/reverse-proxy-demo 上获得README.md 解释了如何在克隆存储库时重现问题。
我有一个 API 网关和一个返回 todos (TodosAPI) 的下游服务。客户端通过 API 网关访问下游服务。
API 网关正在利用该http-proxy-middleware
包来代理请求。有两种实现,第 2 种不起作用:
1. 全局中间件,main.ts
其中在路径 /api/v1/...
这种方法工作得非常好,无论使用什么 http 方法(GET、PUT 等),它都会代理对下游服务的所有请求。
import * as proxy from 'http-proxy-middleware';
app.use(
'/api/v1/todos-api',
proxy({
target: 'http://localhost:8090/api',
pathRewrite: {
'/api/v1/todos-api': ''
},
secure: false,
onProxyReq: (proxyReq, req, res) => {
console.log(
`[Global Functional Middlware]: Proxying ${req.method} request originally made to '${req.originalUrl}'...`
);
}
})
);
Run Code Online (Sandbox Code Playgroud)
2. 在应用模块中注册的 NestMiddleware 启动路径 /api/v2/...
这种方法适用于 GET 请求,但其他 http 方法(如 PUT)一直“挂起”,客户端从未收到任何响应。问题似乎是下游服务中的控制器从未被调用。
import * …
Run Code Online (Sandbox Code Playgroud) 我使用此处的很好的说明成功创建并安装了自定义项目模板。该模板已成功安装,但是,当我基于此模板创建一个新项目时,生成的文件夹包含我实际上不希望存在的三个附加内容:
项目模板在本地创建为本地 NuGet 包。在屏幕截图中查看事情的流程和
谁能告诉我如何防止这些附加文件成为从我的模板生成的项目的一部分?
当我尝试运行在 Nx 工作区中创建的 NestJS 应用程序的构建工件时遇到错误。仅当我在不存在 node_modules 文件夹的存储库之外的任何位置运行生成的工件时,才会发生该错误。
重现步骤:
npm install
以安装所有软件包ng build backend
dist/apps/backend
node main.js
在该文件夹中运行,您应该看到后端成功启动/tmp
或c:\temp
)node main.js
在新位置再次运行,您将遇到以下错误:internal/modules/cjs/loader.js:775
throw err;
^
Error: Cannot find module 'tslib'
Require stack:
- /home/bernhard/main.js
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:772:15)
at Function.Module._lo[ad (internal/modules/cjs/loader.js:677:27)
at Module.require (internal/modules/cjs/loader.js:830:19)
at require (internal/modules/cjs/helpers.js:68:18)
...[omitted for brevity] {
code: 'MODULE_NOT_FOUND',
}
Run Code Online (Sandbox Code Playgroud)
您也可以尝试在 Docker 容器中运行构建工件,它会导致相同的错误。
谁能告诉我问题是什么以及如何解决它?非常感谢!
使用 IdentityServer4 时如何修改令牌验证参数,以便不验证令牌颁发者或可以提供多个有效颁发者?
我尝试了以下方法,但这似乎不起作用:
public void ConfigureServices(IServiceCollection services)
{
// ... omitted
services.AddAuthentication("Bearer")
.AddIdentityServerAuthentication(options =>
{
options.Authority = "http://localhost:5000";
options.RequireHttpsMetadata = false;
options.ApiName = scopeName;
});
services.PostConfigure<JwtBearerOptions>("Bearer", options =>
{
// Option 1: turn off issuer validation at all
options.TokenValidationParameters.ValidateIssuer = false;
// Option 2 (preferable): Provide multiple valid issuers
options.TokenValidationParameters.ValidIssuers = new[]
{
"http://localhost:5000",
"http://127.0.0.1:5000",
};
});
// ... omitted
}
Run Code Online (Sandbox Code Playgroud)
我需要这个的原因:受身份服务器保护的 API 可以在内部和外部访问。外部各方使用与内部各方不同的 URL 从身份服务器获取令牌,因此受保护的 API 应将内部和外部 URL 视为有效。
我想创建一个解决方案,用于控制C#项目中的项目引用。理想情况下,此解决方案与IDE无关,因此可以与Visual Studio,Jetbrains Rider甚至VS Code一起使用。这样做的原因是,由于人们创建了几乎任意的项目引用,所以我看到的解决方案被完全弄乱了。在项目发展到一定规模后,要使它们变得直立是非常困难的。
我知道Visual Studio Enterprise提供了开箱即用的功能。不幸的是,在我目前的公司中,我们没有VS Enterprise。因此,我想自己创建一个。
那么什么是最好的方法呢?经过研究后,我认为将.NET编译器平台(“ Roslyn”)与Workspace API结合使用可能是一个好主意?似乎我可以将其部署为NuGet软件包,然后可以在任何IDE或自动生成中使用。但是,也许有一种更简便或更好的方法,在开始研究之前,我想听听您的意见。
另外:如果“ Roslyn”方法正确,那么在如何创建与Workspace API一起使用的分析器方面是否有一些好的资源?
提前致谢。
c# ×3
nestjs ×2
.net-core ×1
asp.net-core ×1
ionic ×1
middleware ×1
node.js ×1
nrwl ×1
nrwl-nx ×1
roslyn ×1