我正在将 DotNet 4.5 MVC/WebAPI 应用程序转换为 AspNetCore 2.0,但我在让 Cookie 身份验证再次工作时遇到了一些问题。当我设置 cookie 并尝试访问安全方法时,我无法到达那里。当我进入匿名方法并检查用户对象时,它是空的——没有身份验证类型、没有声明等。
我已尽我所能关注这篇文章:https://learn.microsoft.com/en-us/aspnet/core/security/authentication/cookie?tabs=aspnetcore2x .我没有使用身份。
我在startup.cs ConfigureServices中的代码如下:
services.AddAuthentication("ACE_AUTH")
.AddCookie("ACE_AUTH", options =>
{
options.AccessDeniedPath = "/Home/Index/";
options.LoginPath = "/Home/Index/";
});
我在Configure方法中的代码:
app.UseAuthentication();
调用时主体已完全填充。我在哪里设置我的 cookie:
await HttpContext.SignInAsync("ACE_AUTH", samlData.Principal);
在尝试对用户进行身份验证时,我尝试过的任何事情都没有导致我的声明出现。
最佳答案
对于不阅读评论的人(我自己几乎阅读了评论):
Joey:“为我解决问题的方法是将 app.UseAuthentication 移动到 app.UseMvc 之上。它确实在文档中说明了这一点,但它隐藏得很好。”
...这行得通...为什么当您之后执行此操作时它不会抛出异常在我身后。
关于c# - AspNetCore 2.0 声明总是空的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45924240/