User.Identity.GetUserId() всегда возвращает null в действии контроллера

Мне нужно было использовать текущий идентификатор пользователя в контроллере. Он всегда возвращает null. Я уже вошел в систему. Вот мой код.

if (string.IsNullOrEmpty(userId)) userId = User.Identity.GetUserId();

Я попытался добавить ссылку

 using Microsoft.AspNet.Identity;

Я также попытался добавить претензию

public const string UserId = "http://schemas.xmlsoap.org/ws/2014/03/mystuff/claims/UserId";
userIdentity.AddClaim(new Claim(CustomClaimTypes.UserId, Id));

Когда я пытаюсь получить заявку, она также дает нуль.

(identity as ClaimsIdentity).FirstOrNull(CustomClaimTypes.UserId);

Любая помощь будет оценена по достоинству.

Дополнительная информация, запрошенная в комментариях:

Это обычный логин, предоставленный aspnetuser.

        var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
        switch (result)
        {
            case SignInStatus.Success:
                return RedirectToLocal(returnUrl);
            case SignInStatus.LockedOut:
                return View("Lockout");
            case SignInStatus.RequiresVerification:
                return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
            case SignInStatus.Failure:
            default:
                ModelState.AddModelError("", "Invalid login attempt.");
                return View(model);
        }

Request.IsAuthenticated возвращает true.

Заявки добавлены здесь.

    public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
    {
        // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
        var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
        // Add custom user claims here
        userIdentity.AddClaim(new Claim(CustomClaimTypes.UserId, Id));

        return userIdentity;
    }

Печенье

+1
07 апр. '17 в 15:04
источник поделиться
1 ответ

Вот ответ, мне удалось заставить его работать.

Я просто переместил User.Identity.GetUserId(); к методу вспомогательного класса.

Я просто хочу повторить, запрос не является логином. Его отдельный запрос после входа в систему.

Спасибо, ребята, за ваше время.

0
08 апр. '17 в 13:37
источник

Посмотрите другие вопросы по меткам или Задайте вопрос