• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jaki typ danych na pole "hasło" w c#

Cloud VPS
+1 głos
227 wizyt
pytanie zadane 14 kwietnia 2021 w C# przez Jacuchna0 Użytkownik (640 p.)

Witam

Właśnie tworzę swoją pierwszą aplikacje w .necie która pozwoli na logowanie użytkowników, ale nie mogę nigdzie znaleźć jaki typ danych zdefiniować dla pola password. Znalazłem coś takiego, ale prosiłbym o potwierdzenie czy się nada: SecureString , czy może jakaś funkcja hashująca, jeśli tak to jaka?

1
komentarz 14 kwietnia 2021 przez adrian17 Mentor (354,120 p.)
Ale nie powiedziałeś za bardzo w jakim kontekście chcesz mieć to "pole" na hasło. Masz na myśli formularz w Forms, WPF, ASP? Czy może w bazie danych w Entity Framework?
komentarz 14 kwietnia 2021 przez Jacuchna0 Użytkownik (640 p.)
Mój błąd przepraszam. A więc tworzę apkę z wykorzystaniem asp, i mam model "User", który entity wrzuci do bazy. Formularz rejestracji użytkownika będzie tworzył ten obiekt i wysyłał do bazy.
1
komentarz 14 kwietnia 2021 przez adrian17 Mentor (354,120 p.)
ASP.NET nie ma wbudowanych narzędzi i modeli do zarządzania kontami użytkowników?

https://docs.microsoft.com/en-us/aspnet/core/security/authentication/identity?view=aspnetcore-5.0

Nawet jeśli naprawdę chcesz to robić samemu, to haseł w ogóle w modelu się nie przechowuje, tylko ich hashe. Podobnie pole w formularzu też chyba powinno mieć dostępny typ Password (nie znam ASP.NET tak dobrze)? W każdym razie sam fakt skomplikowania tego jest dobrym powodem by użyć gotowych narzędzi do zarządzania logowaniem.
komentarz 14 kwietnia 2021 przez Jacuchna0 Użytkownik (640 p.)
A orientujesz się czy inny framework wspiera logowanie itp?
komentarz 14 kwietnia 2021 przez adrian17 Mentor (354,120 p.)
Inny framework, to znaczy?

1 odpowiedź

+2 głosów
odpowiedź 14 kwietnia 2021 przez kukulim Mądrala (6,440 p.)
wybrane 14 kwietnia 2021 przez Jacuchna0
 
Najlepsza

Cześć,

masz takiego Nugetta : BCrypt.Net-Next

jak rejestrujesz nowego użytkownika :

using BC = BCrypt.Net.BCrypt;

public async Task RegisterAsync(RegisterRequest request)
        {

                var newUser = new User
                {
                    UserName = request.UserName,
                    Password = BC.HashPassword(request.Password)
                };
                await userServices.CreateAsync(newUser);
}

 

i ten nuget haszuje ci hasło, tak ze w bazie danych jest zaszyfrowane.

Później przy logowaniu sprawdzasz czy haslo jest poprawne tak:

using BC = BCrypt.Net.BCrypt;
  
public async Task<LoginResult> AuthenticateAsync(LoginRequest request)
        {

            var CurrentUser = await userServices.GetUserByEmailAsync(request.Email);

            if (CurrentUser == null)
            {
                throw new Exception($"User with {request.Email} not found.");
            }

            if (!BC.Verify(request.Password, CurrentUser.Password))
            {
                throw new Exception($"Credentials for '{request.Email} aren't valid'.");
            }

            return (new LoginResult
            {
                UserId = CurrentUser.Id
            });
}
komentarz 14 kwietnia 2021 przez Jacuchna0 Użytkownik (640 p.)
Wielkie dzięki za pomoc przyjrzę się temu :)

Podobne pytania

+1 głos
2 odpowiedzi 1,009 wizyt
pytanie zadane 6 czerwca 2015 w C# przez Surykat Stary wyjadacz (14,780 p.)
+1 głos
2 odpowiedzi 1,273 wizyt
pytanie zadane 9 kwietnia 2021 w C# przez kubaa322 Użytkownik (710 p.)
0 głosów
2 odpowiedzi 699 wizyt
pytanie zadane 22 lutego 2021 w C# przez disaster Bywalec (2,120 p.)

93,467 zapytań

142,460 odpowiedzi

322,734 komentarzy

62,847 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...