gpt4 book ai didi

c# - 使用 UseCookiesAuthentication 授权 MVC Controller 操作,它在本地工作,当应用程序部署在 azure 中时会出现问题

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

我有 MVC 应用程序,使用 Owin 和 Asp.Net Identity,并使用 useCookieauthentication

在登录过程中,我添加了自定义声明,并且我可以正确登录。 ````

    [HttpPost]
public async Task<ActionResult> Login(LoginViewModel loginViewModel)
{
var user = UserManager.FindByName(loginViewModel.UserName);
var signInStatus = UserManager.CheckPassword(user, loginViewModel.Password);

if (signInStatus)
{
user.Claims.Add(new Microsoft.AspNet.Identity.EntityFramework.IdentityUserClaim() { ClaimType = "CustomClaim", ClaimValue = loginViewModel.UserName.Trim() });
SignInManager.SignIn(user, true, false);
return Redirect(url);
}
else
{
ModelState.AddModelError("", "Invalid login attempt.");
return View(loginViewModel);
}
}

当我收到对我的其中一个操作方法的回调时,我尝试检索我在登录过程中存储的声明自定义声明。当我在本地运行和调试此代码时,它可以按预期正常工作。但是当我将应用程序部署到 azure 时,我无法获取自定义声明值。

       public ActionResult Index()
{
var claimsPrincipal = System.Web.HttpContext.Current.User as System.Security.Claims.ClaimsPrincipal;
var customClaimValue = claimsPrincipal.Identities.First().Claims.First(x => x.Type.Equals("CustomClaim")).Value;
return View();
}

最佳答案

有几件事要尝试,如果它仍然不适合你,请告诉我,根据我在其他答案中介绍的我最近的经验发布。

此外,请进一步排除故障,以了解有关内部堆栈详细信息的更多信息。

  • 正如 @Joey Cai 在他的回答中提到的,更改您的**当请求未在应用服务中进行身份验证时要采取的操作**Azure 门户中的身份验证/授权部分从使用 Azure Active Directory 登录到**允许匿名请求**。如下图所示:

enter image description here

  • 如果上述选项不起作用,请尝试以下操作:

    尝试更改 Azure 上应用程序定义的应用程序 list ,将“oauth2AllowIdTokenImplicitFlow”属性从 false 设置为 true。

    • 转到 Azure 门户,
    • 选择 Azure Active Directory
    • 选择应用注册
    • 选择您的应用。
    • 点击 list
    • 找到值 oauth2AllowIdTokenImplicitFlow 并将其值更改为 true
    • 点击“保存”

Asp.net UseOpenIdConnectAuthentication not working in Azure

希望有帮助。

关于c# - 使用 UseCookiesAuthentication 授权 MVC Controller 操作,它在本地工作,当应用程序部署在 azure 中时会出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58434101/

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