![](/img/trans.png)
[英]Multiple Login Page with Identity Core and Asp.net Core 3.1
[英]ASP .NET Core 3.1 API redirects to login page in prod environment
我創建了一個使用 MVC 的 ASP .NET Core 3.1 網站(至少據我所知)。 除了登錄頁面,我還使用 cookie auth 來限制訪問。 其中一個控制器有一個用[HttpPost]
和[AllowAnonymous]
屬性裝飾的動作。 在我的計算機上運行網站時一切正常,但是當我將其部署到我的產品服務器(服務器 2016 + IIS)並使用 Postman 發布到操作時,我被重定向到登錄頁面並返回登錄頁面的 HTML . 網站的rest,登錄等工作正常。 這只是我遇到問題的 API。
我還嘗試使用 Visual Studio 的模板創建一個全新的 controller,但結果是一樣的。 從 controller 中刪除[Authorize]
屬性也沒有改變這種情況。
有人知道為什么會這樣嗎? 讓我知道是否缺少您可能需要的任何信息。
我的 controller(簡體)
[Authorize]
public class ApplicationController : Controller
{
...
public async Task<IActionResult> Index([FromQuery] string searchTerms, [FromQuery] bool updateDb)
{
...
return View(vm);
}
[AllowAnonymous]
[HttpPost]
public string PostAction([FromBody] object postBody)
{
//Process data (JSON)
return "SomeProcessedDataString";
}
...
}
startup.cs
中的 Cookie 身份驗證內容
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication("myCookieScheme")
.AddCookie("myCookieScheme", (CookieAuthenticationOptions config) =>
{
config.Cookie.Name = "myLoginCookie";
config.LoginPath = "/Home/Login";
});
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
...
app.UseAuthentication();
app.UseAuthorization();
...
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapControllers();
});
謝謝你。
我設法自己解決了這個問題。 由於 prod 服務器上的文件系統權限設置,POST 操作出錯,然后導致 ASP.NET 內核重定向到登錄頁面。 希望這對將來的其他人有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.