【问题标题】:asp.net 5.0.3 identity Authorization not workasp.net 5.0.3 身份授权不起作用
【发布时间】:2021-02-28 17:10:38
【问题描述】:

我用 asp.net mvc 5 建立了一个网站,我使用身份 3 并为控制器使用授权属性 但即使我已登录,它仍会将我带到登录页面

startup.cs:

            app.UseRouting();
            app.UseAuthorization();
            app.UseAuthentication();

控制器:

 [Authorize]
        public async  Task<IActionResult> Index()
        {
}

登录操作:

 public async Task<IActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (_signInManager.IsSignedIn(User))
                return RedirectToAction("Index", "Home");

            model.ReturnUrl = returnUrl;

            ViewData["returnUrl"] = returnUrl;

            if (ModelState.IsValid)
            {
                var result = await _signInManager.PasswordSignInAsync(
                    model.UserName, model.Password, model.RememberMe, true);

                if (result.Succeeded)
                {

                    var user = await _userManager.FindByNameAsync(model.UserName);
                    if (!string.IsNullOrEmpty(returnUrl) && Url.IsLocalUrl(returnUrl))
                        return Redirect(returnUrl);
                    if (await _userManager.IsInRoleAsync(user, "Admin"))
                        return RedirectToAction("Index", "Manage");
                }

                if (result.IsLockedOut)
                {
                    ViewData["ErrorMessage"] = "اکانت شما به دلیل پنج بار ورود ناموفق به مدت پنج دقیقه قفل شده است";
                    return View(model);
                }

                ModelState.AddModelError("", "رمزعبور یا نام کاربری اشتباه است");
            }
            return View(model);

        }

【问题讨论】:

  • “即使我已登录”。我们如何知道您已登录?请将用户登录的操作发布到代码中。
  • @JuanR 我更新了我的问题

标签: asp.net asp.net-identity


【解决方案1】:

需要检查的几件事:

  1. 案例敏感性:

这里是小写:

[Authorize(Roles ="admin")]

这里是大写:

if (await _userManager.IsInRoleAsync(user, "Admin"))
  1. 您是否确实将相关用户添加到角色中?请发布该代码,以便我们了解您在做什么(尤其是外壳)。

  2. 服务器时区。确保您考虑服务器与客户端区域。我不知道这是否是 Identity 的问题,但它过去曾困扰过我。

【讨论】:

  • 不,我只测试 [Authorize],问题未修复
【解决方案2】:

授权前需要注册认证:

app.UseAuthentication();
app.UseAuthorization();

【讨论】:

    猜你喜欢
    • 2016-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-19
    • 2015-10-08
    • 2017-03-11
    • 2020-11-20
    相关资源
    最近更新 更多