Я разрабатываю приложение ASP.NET MVC 5. У меня есть существующая БД, из которой я создал мою ADO.NET Entity Data Model. У меня есть таблица в этой БД, которая содержит столбец «имя пользователя» и «пароль», и я хочу использовать их для реализации проверки подлинности и авторизации в моем Webapp; Я не могу создать какую-либо другую базу данных или таблицу или столбец, и я не могу использовать стандартную идентификационную аутентификацию из-за требований клиента. Мне не нужно управлять регистрацией, сменой пароля или другими материалами: просто войдите с паролем и именем пользователя. Как я могу это сделать?Как реализовать пользовательскую аутентификацию в ASP.NET MVC 5
59
A
ответ
112
Да, вы можете. Части аутентификации и авторизации работают независимо. Если у вас есть собственный сервис аутентификации, вы можете просто использовать авторизационную часть OWIN. У вас уже есть UserManager
, который проверяет username
и password
. Таким образом, вы можете написать следующий код в вашем посте обратно действия входа:
[HttpPost]
public ActionResult Login(string username, string password)
{
if (new UserManager().IsValid(username, password))
{
var ident = new ClaimsIdentity(
new[] {
// adding following 2 claim just for supporting default antiforgery provider
new Claim(ClaimTypes.NameIdentifier, username),
new Claim("http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider", "ASP.NET Identity", "http://www.w3.org/2001/XMLSchema#string"),
new Claim(ClaimTypes.Name,username),
// optionally you could add roles if any
new Claim(ClaimTypes.Role, "RoleName"),
new Claim(ClaimTypes.Role, "AnotherRole"),
},
DefaultAuthenticationTypes.ApplicationCookie);
HttpContext.GetOwinContext().Authentication.SignIn(
new AuthenticationProperties { IsPersistent = false }, ident);
return RedirectToAction("MyAction"); // auth succeed
}
// invalid username or password
ModelState.AddModelError("", "invalid username or password");
return View();
}
И ваш менеджер пользователя может быть что-то вроде этого:
class UserManager
{
public bool IsValid(string username, string password)
{
using(var db=new MyDbContext()) // use your DbConext
{
// for the sake of simplicity I use plain text passwords
// in real world hashing and salting techniques must be implemented
return db.Users.Any(u=>u.Username==username
&& u.Password==password);
}
}
}
В конце концов, вы можете защитить свои действия или контроллеры добавив атрибут Authorize
.
[Authorize]
public ActionResult MySecretAction()
{
// all authorized users can use this method
// we have accessed current user principal by calling also
// HttpContext.User
}
[Authorize(Roles="Admin")]
public ActionResult MySecretAction()
{
// just Admin users have access to this method
}
Смежные вопросы
- 1. Как реализовать простую аутентификацию в ASP.NET MVC 5
- 2. Как реализовать внешнюю аутентификацию с местными требованиями в mvc 5
- 3. создать аутентификацию ролей в asp.net mvc 5
- 4. Как реализовать аутентификацию шлюза доступа в ASP.NET 5 MVC6?
- 5. Авторизовать и активировать пользовательскую аутентификацию в ASP.NET
- 6. Как реализовать пользовательскую авторизацию в asp.net mvc 3?
- 7. Как реализовать ASP.NET MVC-аутентификацию с помощью EXTJS?
- 8. Как реализовать laravel 5 и ldap аутентификацию
- 9. Как реализовать аутентификацию формы в asp.net
- 10. Как настроить организационную аутентификацию в ASP.NET 5
- 11. Как реализовать пользовательскую аутентификацию в приложении Azure Mobile
- 12. Как реализовать аутентификацию и авторизацию в ASP.NET Web API Core?
- 13. Как настроить аутентификацию входа в ASP.NET MVC?
- 14. Пропустить аутентификацию с помощью WIF и asp.net 4.5 MVC 5
- 15. ASP.NET MVC 5 и WEB API используют ту же аутентификацию
- 16. Как изменить аутентификацию ASP.NET MVC после создания?
- 17. Django: Как реализовать пользовательскую аутентификацию с помощью мастер-пароля
- 18. Как реализовать пользовательскую аутентификацию с использованием Spring 2.5
- 19. ASP.NET MVC 5 OWIN Ауентификация
- 20. Миграция ASP.NET MVC 5 в ASP.NET 5
- 21. Развязка ASP.NET MVC 5 Идентификация, позволяющая реализовать многоуровневое приложение
- 22. Как реализовать Custom UserStore (или пользовательскую аутентификацию) в ASP.NET Core (не более старые версии!)
- 23. Как добавить аутентификацию MVC 5 в Unity IoC?
- 24. LDAP-аутентификация в asp.net MVC 5 application
- 25. Как реализовать пейджинг в ASP.NET MVC?
- 26. Реализовать один-ко-многим в ASP.NET MVC 5
- 27. Как реализовать аутентификацию?
- 28. Как реализовать аутентификацию WebServiceHost?
- 29. Как создать пользовательскую авторизацию в ASP.NET Core (ASP.NET 5)
- 30. Как реализовать анонимную аутентификацию?
Извините, я новичок с аутентификацией. Где shuold я использую этот код? Как я могу передать MVC для ввода полей имени пользователя e password из моего класса EF? –
Я только что обновил сообщение, чтобы ответить на ваши вопросы. –
Спасибо! Он отлично работает! –