gpt4 book ai didi

asp.net-mvc - 使用端口号的 ASP.NET Core 身份验证

转载 作者:行者123 更新时间:2023-12-04 16:31:03 24 4
gpt4 key购买 nike

在我的 ASP.NET Core 1.0 应用程序中,我使用 Cookie 中间件来提供我自己的登录屏幕。我遵循了 ASP.NET Core 文档:https://docs.asp.net/en/latest/security/authentication/cookie.html

Startup.cs

...
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationScheme = "MyCookieMiddlewareInstance",
LoginPath = new PathString("/Config/Login"),
AutomaticAuthenticate = true,
AutomaticChallenge = true,
});
...

我的项目现在已经完成,我已经将它发布到 Linux 环境中。我已将 Nginx 配置为反向代理以将请求转发到我的 ASP.NET 应用程序。我的配置将端口 5000 上传入的公共(public)流量转发到我的 Web 应用程序正在监听的当前端口。

/etc/nginx/sites-available/default

server {
listen 5000;
location / {
proxy_pass http://localhost:4007;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}

一切正常;但是当我尝试访问未经授权的页面时,我的应用程序中配置的身份验证选项会将页面转发到登录页面。不幸的是,它从 url 中删除了端口号。当我手动添加端口号时,它起作用了。

当我请求 http://'ip-server':5000/Config 时,应用程序应该将我的请求重定向到 http://'ip-server':5000/Config/Login?ReturnUrl=%2FConfig 而我不是已登录。相反,它现在将我重定向到 http://'ip-server'/Config/Login?ReturnUrl=%2FConfig。特此重定向到一个不存在的页面。

我需要更改什么(在应用程序中?在 Nginx 中?)以便它在 url 中保留端口号?我还没有在互联网上找到任何关于它的信息。

最佳答案

我已经解决了这个问题。我需要在我的 nginx 配置中使用 $http_host 而不是 $host:

server {
listen 5000;
location / {
proxy_pass http://localhost:4007;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $http_host;
proxy_cache_bypass $http_upgrade;
}
}

现在重定向是正确的,它使用 URL 中存在的端口。

关于asp.net-mvc - 使用端口号的 ASP.NET Core 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40069186/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com