2011-02-08 23 views
6

Tôi hiện đang gặp sự cố với xác thực ASP.Net. Hãy xem xét hai dòng sau:FormsAuthentication.Authenticate không xác thực

MembershipCreateStatus ct = new MembershipCreateStatus(); 
Membership.CreateUser("admin", "mypassword", "[email protected]", "1", "1", true, out ct); 

Điều này đăng ký người dùng của tôi trong cơ sở dữ liệu của tôi. Tôi đã xác minh điều này. Tuy nhiên, khi tôi chạy điều này ngay lập tức sau:

FormsAuthentication.Authenticate("admin", "mypassword"); 

Xác thực không thành công. Điều kỳ lạ là tôi biết thực tế là người dùng không tồn tại trong db và điều đó được xác nhận thêm nếu tôi chạy

MembershipUserCollection uc = Membership.FindUsersByName("admin"); 

và uc giữ người dùng quản trị của mình với tất cả thông tin thích hợp. Bất kỳ ý tưởng hay gợi ý nào từ bất kỳ ai về lý do tại sao Authenticate sẽ trả về false?

+0

Toàn bộ chuỗi có phải là một yêu cầu http không? Bạn có thể thử làm điều này trong quá trình hai yêu cầu riêng biệt. Làm thế nào về việc tạo ra "admin" một lần, Session.Abandon(), tải lại trang và sau đó xem nếu bạn có thể xác thực. – xanadont

+0

Hrm nope. Thậm chí nếu tôi cố gắng xác thực trên một trang riêng biệt. Vấn đề phải đến từ phần mật khẩu phải không? Tôi có nghĩa là những gì khác có thể đi sai nếu người dùng tồn tại? – snwr

Trả lời

4

Tôi đã học được điều gì đó một thời gian ngắn trước đây - khi tìm kiếm thông tin trên MSDN luôn luôn đọc phần nhận xét. Bạn sẽ ngạc nhiên rằng nó thường chứa các thông tin quan trọng nhất, nếu không được bảo hiểm, có thể bẫy bạn trong nhiều giờ đôi khi ngày. Xem phần đó cho phương pháp đó here. Sau đó, gọi ValidateUser để ủy quyền khác với xác thực. Có một cái nhìn here.

+1

Ahh cảm ơn. Điều đó có ý nghĩa. Thật dễ bị lạc trong msdn và không đọc phần nhận xét trong mỗi trang heh. – snwr

+0

Nhiều đêm ngủ đã mất ở đó để nhận ra điều này gần đây thực sự là từ việc trả lời các câu hỏi trên trang web này. Tôi đã có 2-3 câu hỏi mà tôi đã trả lời liên tiếp chỉ từ đó, sau đó tôi quyết định xem liệu đó có phải là trường hợp ở nơi làm việc hay không và khoảng 70% khi có một tình huống khó khăn - hãy tự mình thử và bạn sẽ ngạc nhiên. Sau đó một lần nữa 'Ghi chú' sẽ dễ đọc hơn nhiều nếu nó có phông chữ màu đỏ hoặc thậm chí tốt hơn gọi là phần 'Quan trọng'. Điều nhỏ nhặt như vậy nhưng Microsoft sẽ không bao giờ thay đổi nó bởi vì nó có thể là một phần của chiến thuật làm xáo trộn của họ để giữ cho các nhà phát triển trong bóng tối –

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