Zajmuję się tworzeniem aplikacji ASP.NET MVC 5. Mam istniejącą bazę danych, z której utworzyłem mój model danych jednostki podmiotu ADO.NET. Mam tabeli w tym DB, który zawiera kolumnę "nazwa użytkownika" i "hasło", i chcę je wykorzystać do wdrożenia uwierzytelniania i autoryzacji w mojej aplikacji sieci Web; Nie mogę utworzyć żadnej innej bazy danych, tabeli ani kolumny i nie mogę korzystać ze standardowego uwierzytelniania tożsamości ze względu na wymagania klienta. Nie muszę zarządzać rejestracją, zmianą hasła ani innymi kwestiami: wystarczy zalogować się przy użyciu hasła i nazwy użytkownika. Jak mogę to zrobić?Jak zaimplementować uwierzytelnianie niestandardowe w ASP.NET MVC 5
59
A
Odpowiedz
112
Tak, możesz. Części uwierzytelniania i autoryzacji działają niezależnie. Jeśli posiadasz własną usługę uwierzytelniania, możesz po prostu użyć części autoryzacyjnej OWIN. Załóżmy, że masz już UserManager
, który potwierdza username
i password
. W związku z tym można napisać następujący kod w swoim post Powrót działania logowanie:
[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();
}
I menedżer użytkownik może być coś takiego:
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);
}
}
}
W końcu można chronić swoje działania lub kontrolerów przez dodanie atrybutu 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
}
Powiązane problemy
- 1. Jak zaimplementować uwierzytelnianie niestandardowe w Spring Security 3?
- 2. Uwierzytelnianie w ASP.NET 5 (vNext)
- 3. Całkowicie niestandardowe uwierzytelnianie w ASP.NET MVC: utrata HttpContext.User
- 4. Jak zaimplementować stronicowanie w ASP.NET MVC?
- 5. Uwierzytelnianie LDAP w ASP.Net MVC
- 6. Podstawowe uwierzytelnianie w ASP.NET Rdzenia
- 7. Jak zaimplementować płynne API w ASP.NET MVC?
- 8. Uwierzytelnianie użytkowników ASP.NET MVC 3
- 9. Niestandardowe komponenty i ASP.NET MVC
- 10. Hybrydowe uwierzytelnianie Windows i uwierzytelnianie formularzy w ASP.NET MVC 4
- 11. Niestandardowe nazwy ról w ASP.NET MVC?
- 12. Tworzenie ról w Asp.net Tożsamość MVC 5
- 13. . Niestandardowe członkostwo VS. Niestandardowe logowanie/rejestracja: uwierzytelnianie/autoryzacja
- 14. Kaskadowe listy rozwijane w ASP.NET MVC 5
- 15. "Generic" OpenID w ASP.NET MVC 5
- 16. FormCollections brakuje w ASP.Net 5
- 17. HandleUnknownAction w ASP.NET 5
- 18. Jak powinienem obsługiwać autoryzację/uwierzytelnianie w mojej aplikacji Asp.net MVC?
- 19. Niestandardowe MembershipProvider w MVC 4
- 20. Jak zaimplementować bazy danych obiektów w Asp.net MVC
- 21. Jak zaimplementować stronę pełnoekranową "ładowanie ..." w ASP.NET MVC?
- 22. Jak zaimplementować funkcje wyszukiwania w aplikacjach ASP.NET MVC
- 23. Jak zaimplementować uwierzytelnianie użytkownika w phoenix
- 24. Niestandardowe kierowanie ASP.NET MVC do wyszukiwania
- 25. Google AppEngine: niestandardowe uwierzytelnianie
- 26. Jak zaimplementować obszary w ASP.NET MVC 1.0, aby były najbardziej kompatybilne z ASP.NET MVC 2.0
- 27. RoutePrefixAttribute w ASP.NET 5
- 28. Uwierzytelnianie i autoryzacja bez struktury encji w ASP.NET 5 MVC 6
- 29. Jak przetestować niestandardowe bindery modeli w środowisku ASP.NET MVC?
- 30. Jak mogę rozszerzyć tożsamość o niestandardowe atrybuty w ASP.NET MVC?
Przykro mi, jestem nowicjuszem z uwierzytelnianiem. Gdzie shuold używam tego kodu? Jak mogę nakazać MVC pobranie pól username e password z mojej klasy EF? –
Właśnie zaktualizowałem swój post, aby odpowiedzieć na twoje pytania. –
Dzięki! Działa świetnie! –