gpt4 book ai didi

asp.net-mvc - ASP.NET Core MVC - 不带身份的 Cookie 中间件

转载 作者:行者123 更新时间:2023-12-02 14:44:26 25 4
gpt4 key购买 nike

我想修改默认的 Web 应用程序模板以使用 Cookie 身份验证而不是身份验证。这就是我所做的:

1/删除任何涉及身份的内容

2/按照本指南 https://docs.asp.net/en/latest/security/authentication/cookie.html

Problem

当我尝试访问受限资源 (/Home/Secret) 时,我被重定向到登录页面 => 正确行为

我输入电子邮件/密码并提交 => 在客户端中创建名为 .AspNet.MyCookieMiddlewareInstance 的 cookie => 正确行为

但随后我被重定向到 Account/AccessDenied 而不是 /Home/Secret/Account/AccessDenied 来自哪里?

我似乎无法弄清楚。你能帮我一下吗?

谢谢

最佳答案

我也遇到了同样的问题。经过一些研究和调整后,它起作用了......现在我认为问题如下。起初,我将校长构建如下

 var claimsPrincipal = new ClaimsPrincipal(new ClaimsIdentity(myclaims));

但实际上应该是这样的

 var claimsPrincipal = new ClaimsPrincipal(new ClaimsIdentity(myclaims, "MyCookieMiddlewareInstance"));

现在显然必须设置这个字符串“MyCookieMiddlewareInstance”。
这也是完整的配置和 Controller :
在Startup.cs中

public void Configure(IApplicationBuilder app)
{
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationScheme = "MyCookieMiddlewareInstance",
LoginPath = new PathString("/Auth/Login"),
AccessDeniedPath = new PathString("/Auth/Denied"),
AutomaticAuthenticate = true,
AutomaticChallenge = true
});


app.UseMvc(routes =>
{
routes.MapRoute(
"default",
"{controller=Home}/{action=Index}/{id?}");
});
}

然后在AuthController.cs中

[HttpPost]
public ActionResult Login(LoginModel model)
{
if (model.Username == "test" && model.Password == "pass")
{
var myclaims = new List<Claim>(new Claim[] { new Claim("Id", "SOME USER ID FROM SOMEWHERE!!") });

var claimsPrincipal = new ClaimsPrincipal(new ClaimsIdentity(myclaims, "MyCookieMiddlewareInstance"));

HttpContext.Authentication.SignInAsync("MyCookieMiddlewareInstance", claimsPrincipal).Wait();

return RedirectToAction("Index", "Home");
}

return View(new LoginModel());
}

希望这会有所帮助,即使有点晚了。

关于asp.net-mvc - ASP.NET Core MVC - 不带身份的 Cookie 中间件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36515902/

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