dir.by  
  Поиск  
Компьютер, программы
→
.NET Core
 Аутентификация (authentication) это login/register/logout в приложении ASP.NET Core MVC 
посмотрели 6010 раз
обновлено: 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