Tôi gặp sự cố với cookie trong MVC3. Tôi muốn tạo một cookie, lưu trữ thông tin cho dù người dùng đã đăng nhập. Tôi chưa bao giờ sử dụng cookie trước đây và không biết cách thích hợp để làm điều đó là gì và tôi mới sử dụng MVC3. Xin vui lòng, ai đó có thể cho tôi biết nếu cách tiếp cận tôi sử dụng để lưu trữ cookie là đúng hoặc nếu có một số nguy cơ bảo mật (mật khẩu được mã hóa)? Nếu các cookie được đặt chính xác, làm cách nào tôi có thể sử dụng chúng trong các chế độ xem khác để kiểm tra xem người dùng có đăng nhập hay không và đặt phiên cho anh ta? Nếu cách tiếp cận tôi sử dụng để đăng nhập người dùng là sai, chỉ cần cho tôi biết.Tạo và đọc cookie để xác nhận người dùng đã đăng nhập trong C# MVC3
public ActionResult Login(string name, string hash, string keepLogged)
{
if (string.IsNullOrWhiteSpace(hash))
{
Random random = new Random();
byte[] randomData = new byte[sizeof(long)];
random.NextBytes(randomData);
string newNonce = BitConverter.ToUInt64(randomData, 0).ToString("X16");
Session["Nonce"] = newNonce;
return View(model: newNonce);
}
User user = model.Users.Where(x => x.Name == name).FirstOrDefault();
string nonce = Session["Nonce"] as string;
if (user == null || string.IsNullOrWhiteSpace(nonce))
{
return RedirectToAction("Login", "Users");
}
string computedHash;
using (SHA256 sha256 = SHA256.Create())
{
byte[] hashInput = Encoding.ASCII.GetBytes(user.Password + nonce);
byte[] hashData = sha256.ComputeHash(hashInput);
StringBuilder stringBuilder = new StringBuilder();
foreach (byte value in hashData)
{
stringBuilder.AppendFormat("{0:X2}", value);
}
computedHash = stringBuilder.ToString();
}
if (computedHash.ToLower() == hash.ToLower())
{
Session["IsAdmin"] = user.IsAdmin == 1;
Session["IDUser"] = user.IDUser;
ViewBag.IdUser = IDUser;
ViewBag.IsAdmin = IsAdmin;
ViewBag.UserName = model.Users.Where(x => x.IDUser == IDUser).First().Name;
if (keepLogged == "keepLogged")
{
//Set user's cookies - is this correct?
Response.Cookies.Add(new HttpCookie("UserCookie", user.IDUser.ToString()));
Response.Cookies.Add(new HttpCookie("PassCookie", user.Password.ToString()));
}
}
return RedirectToAction("Index", "Posts");
}
có lẽ bạn muốn sử dụng xác thực biểu mẫu? –