Im a CS major và tôi vừa hoàn thành thiết kế trang ASP.net và cho trang web tôi cần hệ thống xác thực đăng nhập ... Tôi không muốn sử dụng SQLMembershipProvider vì tôi thực sự muốn tìm hiểu làm thế nào để tự mình làm ... Dù sao thì đây là điều tôi nghĩ ra, và tôi tự hỏi liệu có ai có thể cho tôi một số phản hồi, lời khuyên hay lời khuyên.Xác thực ASP.net
Cảm ơn trước
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; }
}
Nếu bạn muốn tạo nhà cung cấp tư cách thành viên tùy chỉnh, trước tiên bạn phải kế thừa từ MemberShipProvider. Và đây là tài liệu khá tốt nếu bạn google một chút. –
Đừng cố gắng cuộn các chương trình quản lý phiên và xác thực tùy chỉnh của riêng bạn hoặc tạo các điều khiển của riêng bạn trừ khi bạn thực sự không có lựa chọn nào khác. Tôi chỉ muốn làm điều đó, không đủ điều kiện. Một điều thú vị: http://www.troyhunt.com/2010/07/owasp-top-10-for-net-developers-part-3.html –
@ChristopheGeers Chính xác ... Nó khá cồng kềnh để tự mình làm, xây dựng trong MembershipProviders làm việc tốt, họ phải được cấu hình để làm như vậy. – sinni800