2010-04-22 59 views
8

Tôi đang tạo ứng dụng ASP.NET MVC. Do ủy quyền phức tạp, tôi đang cố gắng xây dựng hệ thống đăng nhập của riêng mình. Tôi không sử dụng các nhà cung cấp thành viên ASP.NET và các lớp liên quan)Theo dõi người dùng đã đăng nhập

Tôi có thể tạo tài khoản mới trong cơ sở dữ liệu bằng mật khẩu băm.

Làm cách nào để theo dõi người dùng đã đăng nhập?

Đang tạo số ngẫu nhiên dài và đặt số này với userID trong cơ sở dữ liệu và cookie đủ?

+0

Tiếng Anh của bạn rất tốt :) – roryf

+2

Nếu bạn muốn tùy chỉnh xác thực ASP.NET, thì bạn * nên * sử dụng nhà cung cấp thành viên, ngay cả khi bạn phải tự viết tất cả. http://blogs.teamb.com/craigstuntz/2009/09/09/38390/ –

Trả lời

7

Sau khi chứng thực thông tin người dùng, bạn có thể có một mã như:

public void SignIn(string userName, bool createPersistentCookie) 
{ 
    int timeout = createPersistentCookie ? 43200 : 30; //43200 = 1 month 
    var ticket = new FormsAuthenticationTicket(userName, createPersistentCookie, timeout); 
    string encrypted = FormsAuthentication.Encrypt(ticket); 
    var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encrypted); 
    cookie.Expires = System.DateTime.Now.AddMinutes(timeout); 
    HttpContext.Current.Response.Cookies.Add(cookie); 
} 

Vì vậy, mã của bạn có thể như thế này:

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult LogOn(string userName, string passwd, bool rememberMe) 
{ 
    //ValidateLogOn is your code for validating user credentials 
    if (!ValidateLogOn(userName, passwd)) 
    { 
     //Show error message, invalid login, etc. 
     //return View(someViewModelHere); 
    } 

    SignIn(userName, rememberMe); 

    return RedirectToAction("Home", "Index"); 
} 

Trong yêu cầu tiếp theo từ người dùng đăng nhập, HttpContext.User .Identity.Name phải chứa tên người dùng của người dùng đã đăng nhập.

Trân trọng!

+0

Wow cảm ơn rất nhiều người đàn ông! Rất hữu ích!!! –

+0

Cảm ơn rất hữu ích. Nhưng tôi phải làm gì khi đăng xuất? – HelpASisterOut

+0

@HelpASisterOut FormsAuthentication.SignOut(); FormsAuthentication.RedirectToLoginPage() – uvita

Các vấn đề liên quan