Bir CS büyük ve ben sadece bir ASP.net sitesi tasarımı yaptım ve site için bir giriş kimlik doğrulama sistemi gerekiyordu ... Ben gerçekten öğrenmek istediğim gibi SQLMembershipProvider kullanmak istemedim Kendi başıma nasıl yapılacağı ... Her neyse, bu benim ortaya çıktığım şey, ve bana birileri bana bir geri bildirim, ipucu veya tavsiye verebilir mi diye merak ediyordum. PeşinASP.net kimlik doğrulaması
Teşekkür
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Security.Cryptography;
/// <summary>
/// Summary description for PwEncrypt
/// </summary>
public class PwEncrypt
{
public const int DefaultSaltSize = 5;
private static string CreateSalt()
{
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
byte[] buffer = new byte[DefaultSaltSize];
rng.GetBytes(buffer);
return Convert.ToBase64String(buffer);
}
public static string CreateHash(string password, out string salt)
{
salt = CreateSalt();
string saltAndPassword = String.Concat(password, salt);
string hashedPassword = FormsAuthentication.HashPasswordForStoringInConfigFile(saltAndPassword, "SHA1");
hashedPassword = string.Concat(hashedPassword, salt);
return hashedPassword;
}
public static string CreateHashAndGetSalt(string password, string salt)
{
string saltAndPassword = String.Concat(password, salt);
string hashedPassword = FormsAuthentication.HashPasswordForStoringInConfigFile(saltAndPassword, "SHA1");
hashedPassword = string.Concat(hashedPassword, salt);
return hashedPassword;
}
public static bool comparePassword(string insertedPassword, string incUserName, out string newEncryptedPassword, out string originalPassword)
{
databaseInteraction DBI = new databaseInteraction();
string actualPassword ="";
string salt = "";
DBI.getSaltandPassword(incUserName, out salt, out actualPassword);
string hashedIncPassword = PwEncrypt.CreateHashAndGetSalt(insertedPassword, salt);
// hashedIncPassword = string.Concat(hashedIncPassword, salt);
newEncryptedPassword = hashedIncPassword;
originalPassword = actualPassword;
if (newEncryptedPassword == originalPassword)
{
return true;
}
else { return false; }
}
Özel üyelik sağlayıcı oluşturmak istiyorsanız, önce MemberShipProvider'dan miras almanız gerekir. Ve google biraz eğer bu oldukça iyi belgelenmiştir. –
Başka hiçbir seçeneğiniz olmadıkça kendi özel kimlik doğrulama ve oturum yönetimi planlarınızı aktarmaya veya kendi kontrollerinizi oluşturmaya çalışmayın. Sadece yapmak istiyorum, uygun değil. İlginç bir okuma: http://www.troyhunt.com/2010/07/owasp-top-10-for-net-developers-part-3.html –
@ChristopheGeers Tam olarak ... Kendiniz yapmak oldukça zahmetli. ÜyelikProviders iyi çalışır, jut bunu yapmak için yapılandırılmış olması gerekir. – sinni800