dir.by  
  Поиск  
Программирование, разработка, тестирование
.NET Core
Аутентификация (authentication) это login/register/logout в приложении ASP.NET Core MVC
  Посмотрели 3557 раз(а)    
 Аутентификация (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 6.0) для Visual Studio 2022. На заметку! .NET 6.0 не устанавливается и не работает для Visual Studio 2019
 
Ваши Отзывы ... комментарии ...
   
Ваш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 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  
Яндекс.Метрика