Asp. Net Core 3.0 Авторизация и аутентификация - PullRequest
0 голосов
/ 23 января 2020

Где бы я ни смотрел на inte rnet, в процессе входа в систему используется идентификация, связанная с net .core. Никто не говорит о входе в систему с нашим обычным именем пользователя и паролем. Мы входим в систему, но на этот раз при проверках. Мы не можем использовать атрибут [Authorize (Roles = "Admin")] или [Authorize]. Чтобы использовать его, нам нужно войти в систему следующим образом.

signInManager.PasswordSignInAsyn c (model.email, model.password, true, true);

Посмотрите на эту ссылку, но результат это то же самое https://docs.microsoft.com/tr-tr/aspnet/core/fundamentals/middleware/?view=aspnetcore-3.1#ord это

Если это окажется результатом здесь, мы пытаемся это сделать. Что мне нужно сделать, чтобы использовать вышеуказанные атрибуты для моего собственного входа в систему без использования Policy, signInManager.PasswordSignInAsyn c делает именно то, что я добавил к сообщению, как показано ниже, но в любом случае это не произошло.

Мой логин https://rextester.com/YBJ16358

Мой запуск

https://rextester.com/VZODZ96615

1 Ответ

1 голос
/ 24 января 2020

Я решил проблему следующим образом. если имя пользователя и пароль верны

var identity = new ClaimsIdentity(CookieAuthenticationDefaults.AuthenticationScheme, ClaimTypes.Name, ClaimTypes.Role);

            identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, user.UserName));
            identity.AddClaim(new Claim(ClaimTypes.Name, user.UserName));
            identity.AddClaim(new Claim(ClaimTypes.GivenName, user.Name));
            identity.AddClaim(new Claim(ClaimTypes.Surname, user.Surname));
            identity.AddClaim(new Claim(ClaimTypes.Email, user.Email));
            foreach (var role in _userManager.GetRolesAsync(user).Result)
            {
                identity.AddClaim(new Claim(ClaimTypes.Role, role));
            }
            ClaimsPrincipal principal = new ClaimsPrincipal(identity);
            AuthenticationProperties _authentication = new AuthenticationProperties
            {
                IsPersistent = true,
                ExpiresUtc = DateTimeOffset.UtcNow
            };
            await _HttpContextAccessor.HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, principal, new AuthenticationProperties { IsPersistent = true });

Мой запуск

 services.AddAuthentication(options =>
            {
                options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
                options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
                options.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme;
            })
            .AddCookie(config =>
            {
                config.Cookie.Name = "login";
                config.LoginPath = "/Account/Login";
                config.ExpireTimeSpan = TimeSpan.FromMinutes(5);
            });

и приложение

   app.UseAuthentication();
   app.UseAuthorization();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...