dir.by  
Программирование, разработка, тестирование
.NET Core
Аутентификация (authentication) это login/register/logout в приложении ASP.NET Core MVC
  Посмотрели 4055 раз(а)    
 Аутентификация (authentication) это login/register/logout в приложении ASP.NET Core MVC 
последнее обновление: 28 марта 2021
Аутентификация - процесс идентификации пользователя т.е. это login/register/logout

Аутентификация в ASP.NET Core делается так:
register
1) пользователь открывает register web page и в форме вводит ноый login, password

2) Вызывается метод Register в AuthenticationController и внутри сохраняем в базу данных такой login и password

Вот код программы:

  C#  
public class AuthenticationController : Controller
{
     ...
     [HttpPost]
     [ValidateAntiForgeryToken]
     public ActionResult Register(UserRegisterViewModel model)
     {
          if (ModelState.IsValid)
          {
               User user = _myDbContext.Users.FirstOrDefault(u => u.LoginEmail == model.LoginEmail);

               if (user == null)
               {
                    // use Automapper to convert ViewModel to database model
                    user = _mapper.Map<User>(model);

                    // add logn, password to database
                    _myDbContext.Users.Add(user);
                    _myDbContext.SaveChanges();

                    // redirect to home page
                    return RedirectToAction("Index", "Home");
               }
               else
               {
                    ModelState.AddModelError("", "Error! User with this Email already exists");
               }
          }

          return View(model);
     }
}


Смотреть всю программу на GitHub.com: WebCoreBookLibrary с использованием login/register/logout
login
1) пользователь открывает login web page и в форме вводит login, password

2) Вызывается метод Login в AuthenticationController и внутри проверяем есть ли в базе данных такой login и password

Если login и password соответствует это значит настоящий пользователь и мы заполняем C# класс ClaimsIdentity

Вот код программы:

  C#  
public class AuthenticationController : Controller
{
     ...
     [HttpPost]
     [ValidateAntiForgeryToken]
     public ActionResult Login(UserLoginViewModel model)
     {
          if (ModelState.IsValid)
          {
               User user = _myDbContext.Users.FirstOrDefault(u => u.LoginEmail == model.LoginEmail && u.Password == model.Password);

               if (user != null)
               {
                    // create Identity
                    ClaimsIdentity identity = new ClaimsIdentity("My");

                    // add Claims
                    identity.AddClaims(new List<Claim>
                    {
                         new Claim(ClaimTypes.Name, user.UserName),
                         new Claim(ClaimTypes.Email, user.LoginEmail)
                    });

                    // create Principal
                    ClaimsPrincipal principal = new ClaimsPrincipal(identity);

                    // set to cookie
                    HttpContext.SignInAsync(principal, new AuthenticationProperties { IsPersistent = true, ExpiresUtc = (DateTime.Now.AddHours(8)) });

                    // set identity to HttpContext.User (will use in HttpContext.User in any method in Controller)
                    HttpContext.User = new ClaimsPrincipal(identity);


                    // теперь в любом методе Contoller мы всегда получим HttpContext.User и на View отобразим соответствующую информацию о пользователе (залогинен или нет, графики таблицы будем рисовать в зависимоти от пользователя)

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

               ModelState.AddModelError("", "Error! User not exist with this email and password");
          }

          return View(model);
     }
}


Смотреть всю программу на GitHub.com: WebCoreBookLibrary с использованием login/register/logout
logout
1) пользователь на web page нажимает на logout

2) Вызывается метод Logoff() в AuthenticationController и мы очищаем Cookie

Вот код программы:

  C#  
public class AuthenticationController : Controller
{
     ...
     public ActionResult Logoff()
     {
          // clear Cookie
          HttpContext.SignOutAsync();

          // redirect to home page
          return RedirectToAction("Index", "Home");
     }
}


Смотреть всю программу на GitHub.com: WebCoreBookLibrary с использованием login/register/logout
 
← Предыдущая тема
Telerik (Kendo UI) в ASP.NET Core MVC (подключаем Kendo js файлы используя NPM и Webpack)
 
Следующая тема →
Инсталлируем новую версию (.NET 9) для Visual Studio 2022 | Ошибка: NETSDK1 The current .NET SDK does not support targeting .NET 9.0. Either target .NET 7.0 or lower, or use a version of the .NET SDK that supports .NET 9.0.
 
Ваши Отзывы ... комментарии ...
   
Вашe имя
Ваш комментарий (www ссылки может добавлять только залогиненный пользователь)

Экскурсии по Москве Экскурсии по Москве: пешеходные, автобусные и речные прогулки на любой вкус
  Объявления  
  Объявления  
 
Что такое .NET Core ?
Создаем новое консольное приложение .NET Core
ASP.NET Core
Что такое ASP.NET Core ?
Создаем новое приложение ASP.NET Core
ASP.NET Core MVC
Создаем новое приложение ASP.NET Core MVC
Встроенный контейнер IoC в ASP.NET Core

База данных (Entity Framework) в ASP.NET Core MVC
Entity Framework в приложении ASP.NET Core MVC. Используем Code First (пишем c# код, а таблицы в базе данных создаются сами)

Telerik (Kendo UI) в ASP.NET Core MVC
Telerik (Kendo UI) в ASP.NET Core MVC (подключаем Kendo js файлы используя NPM и Webpack)

Аутентификация (login/register/logout) в приложении ASP.NET Core MVC
Аутентификация (authentication) это login/register/logout в приложении ASP.NET Core MVC
Дополнительные темы, вопросы
Инсталлируем новую версию (.NET 9) для Visual Studio 2022 | Ошибка: NETSDK1 The current .NET SDK does not support targeting .NET 9.0. Either target .NET 7.0 or lower, or use a version of the .NET SDK that supports .NET 9.0.
Инсталлируем новую версию (.NET 6.0) для Visual Studio 2022. На заметку! .NET 6.0 не устанавливается и не работает для Visual Studio 2019
Инсталлируем новую версию (.NET Core 2.2) для Visual Studio 2019
Выбор между ASP.NET Core и ASP.NET ?
Перенос кода в .NET Core из .NET Framework
Error "unable to connect to web server "iis express" | ASP.NET Core | Visual Studio 2017
Error "This site can't be reached" when run ASP.NET Core application | Solution: Recreate the Self-Signed HTTPS Certificate for localhost in IIS Express
WWW сайты для изучения
Сайты для изучения ASP.NET Core

  Ваши вопросы присылайте по почте: info@dir.by  
Яндекс.Метрика