Tôi vừa tải xuống phiên bản VS 2012 cùng với ASP.NET 4.5 và MVC 4.0 và đang khởi động lốp xe bằng ứng dụng mẫu và thấy rằng xác thực biểu mẫu hoạt động hoàn hảo với ASP.NET 4.0/MVC 3 dường như không còn hoạt động với bản phát hành mới nhất.Nâng cấp lên ASP.NET 4.5/MVC 4 hình thức xác thực không thành công
Khi tôi thực hiện một cuộc gọi đến chức năng Đăng nhập vào bộ điều khiển hành động, cuộc gọi WebSecurity.Login thất bại:
public ActionResult Login(LoginModel model, string returnUrl)
{
if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe))
{
return RedirectToLocal(returnUrl);
}
// If we got this far, something failed, redisplay form
ModelState.AddModelError("", "The user name or password provided is incorrect.");
return View(model);
}
tôi đã thay thế mã này bằng tương đương nguồn VS 2010 của tôi, và đó cũng không thành công (sử dụng chức năng FormsAuthentication.Authenticate hiện không được chấp nhận).
Câu hỏi của tôi là: Có ai đã chuyển một ứng dụng MVC3 sang MVC4 và tìm thấy giải pháp cho sự cố này không? Tôi đang sử dụng IIS Express, vì vậy tôi đoán rằng có thể gây ra một số vấn đề bằng cách nào đó, nhưng nếu bạn có bất kỳ ý tưởng, tôi sẽ đánh giá cao nó.
tôi sao chép cấu hình của tôi từ asp.net làm việc ứng dụng 4/MVC3 của tôi như sau, nhưng không có may mắn (đây là phần có liên quan):
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=tcp:sql2k1201.dbprovider.net;Initial Catalog=SQL2012_db;User ID=SQL2012_db_user;Password=dbpassword;" providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880"/>
</authentication>
<membership>
<providers>
<clear/>
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="DefaultConnection"
enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
applicationName="/" />
</providers>
</membership>
<profile>
<providers>
<clear/>
<add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="DefaultConnection" applicationName="/" />
</providers>
</profile>
<roleManager enabled="true">
<providers>
<clear/>
<add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="DefaultConnection" applicationName="/" />
</providers>
</roleManager>
Pranav - cảm ơn vì đã chỉ ra bài viết đó. Tôi nhận thấy rằng vô số nhận xét về bài viết đã đề cập rằng các nhà cung cấp mới là bất cứ điều gì nhưng đơn giản và không có đường dẫn di chuyển trơn tru nếu bạn muốn chuyển đổi thành viên/vai trò hiện có sang giản đồ mới. Dường như với tôi trong khi họ có thể đã cố gắng đơn giản hóa một hệ thống phức tạp, họ đã làm cho nó nhiều hơn thế, và chỉ thử những thứ mới bằng cách thay đổi nhanh chóng kết quả web.config trong các bảng mới không hoạt động với thiết lập trước. Tôi chắc chắn sẽ tìm hiểu thêm về điều này! –