2010-04-29 39 views
6

Tôi không thể đăng nhập bằng bất kỳ tài khoản thành viên nào sử dụng phiên bản ứng dụng .net 4.0. Nó không thành công như mật khẩu sai, và FailedPasswordAttemptCount được tăng lên trong bảng my_aspnet_membership. (Tôi đang sử dụng tư cách thành viên với nhà cung cấp thành viên mysql.)Đăng nhập không thành công sau khi nâng cấp lên ASP.net 4.0 từ 3.5

Tôi có thể tạo người dùng mới. Chúng xuất hiện trong cơ sở dữ liệu. Nhưng tôi không thể đăng nhập bằng thông tin đăng nhập người dùng mới (có, IsApproved là 1).

Một đầu mối là các mật khẩu băm trong cơ sở dữ liệu dài cho người sử dụng tạo ra bằng cách sử dụng phiên bản asp.net 4.0, ví dụ 3lwRden4e4Cm + cWVY/spa8oC3XGiKyQ2UWs5fxQ5l7g =, và .net 3.5 cũ đều thích + JQf1EcttK + 3fZiFpbBANKVa92c =.

Tôi vẫn có thể đăng nhập khi kết nối với cùng một db với phiên bản .net 3.5, nhưng chỉ với các tài khoản cũ, chứ không phải phiên bản mới được tạo bằng phiên bản .net 4.0. Phiên bản 4.0 không thể đăng nhập vào bất kỳ tài khoản nào.

tôi đã cố gắng thả toàn bộ cơ sở dữ liệu trên hệ thống thử nghiệm của tôi, các bảng thành viên này sau đó được tự động tạo ra trên chạy đầu tiên, nhưng nó vẫn như nhau, có thể tạo người dùng, nhưng không thể đăng nhập.

Trả lời

13

Xem: HERE

Thuật toán băm mặc định đã thay đổi đối với .net 4.0. Thuật toán băm mặc định bây giờ là HMACSHA256. Các phiên bản trước của ASP.NET đã sử dụng thuật toán HMACSHA1 cũ hơn.

Để cấu hình một ứng dụng ASP.NET 4 Web sử dụng các thuật toán HMACSHA1 cũ, thêm dòng sau để thiết lập các phần system.web của file Web.config:

<machineKey validation="SHA1"/> 
+0

Bạn thưa ông lưu trong ngày đối với tôi . +1 –

2

Tôi gặp chính xác cùng một vấn đề. Tôi có ứng dụng web của tôi ở cả 3.5 và 4.0 và chỉ các tài khoản "cũ" hoạt động trên phiên bản 3.5.

Đây là hy vọng ai đó có câu trả lời!

UPDATE:

Tôi đã thay đổi passwordFormat để Clear và tôi đã có thể tạo một người dùng mới và đăng nhập với ứng dụng 4.0. Có vẻ như một cái gì đó đã thay đổi theo cách mật khẩu được băm.

CẬP NHẬT 2:

Tôi có thể làm cho một trong các tài khoản "cũ" hoạt động. Với sự thay đổi ở trên đối với passwordFormat, tôi đã thay đổi cột PasswordFormat trong my_aspnet_membership thành 0 và thiết lập mật khẩu theo cách thủ công trong cùng một bảng. Trong khi điều này phức tạp và lộn xộn, nó cho phép tài khoản nhận được nó. Tôi sẽ thử chạy thiết lập lại mật khẩu và xem có khắc phục được các tài khoản bị hỏng hay không.

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