5

Tôi mới bắt đầu sử dụng ASP.NET MVC 5 (Tôi đã sử dụng các phiên bản trước khá nhiều) và tôi gặp vấn đề rất lạ: Tôi đã tạo trang web mới sử dụng mẫu Visual Studio 2013 (được cập nhật đầy đủ) ASP.NET. Đối với các tùy chọn mẫu tôi đã chọn mẫu MVC, loại xác thực "Tài khoản người dùng cá nhân", không có lưu trữ đám mây và không có thành phần nào khác ngoài thư viện MVC cốt lõi. Sau khi tôi xác nhận các tùy chọn, tôi cập nhật tất cả các gói NuGet. Và sau đó tôi nhấn F5 (không mở hoặc sửa đổi bất kỳ tệp dự án mới nào).ASP.NET MVC 5: Chuyển hướng vô tận đến trang đăng nhập bằng mẫu site

Trình duyệt sẽ mở ra chỉ để hiển thị một trang lỗi, vì một vòng lặp vô tận chuyển hướng: URL cho thấy:

http://localhost:24585/Account/Login?ReturnUrl=%2FAccount%2FLogin%3FReturnUrl%3D%252FAccount%252FLogin%253FReturnUrl%253D%25252FAccount%25252FLogin%25253FReturnUrl%25253D%2525252FAccount%252525<snip> 

Một lần nữa, đây là với các cổ phiếu, chưa sửa đổi ASP.NET MVC mẫu. Tôi đã kiểm tra xem URL đăng nhập được xác định trong các tùy chọn cookie auth, và điều đó có vẻ tốt:

// Configure the sign in cookie 
app.UseCookieAuthentication(new CookieAuthenticationOptions 
{ 
    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
    LoginPath = new PathString("/Account/Login"), 
    Provider = new CookieAuthenticationProvider 
    { 
     // Enables the application to validate the security stamp when the user logs in. 
     // This is a security feature which is used when you change a password or add an external login to your account. 
     OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
      validateInterval: TimeSpan.FromMinutes(30), 
      regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)) 
    } 
});    

Điều duy nhất mà có lẽ có thể phá vỡ các trang web mặc định là một cái gì đó trong web.config/file machine.config toàn cầu , mặc dù tôi thường tránh lộn xộn với họ trên hộp dev của tôi. Việc khởi chạy mẫu mà không cập nhật gói NuGet không giải quyết được vấn đề. Có lẽ có điều gì đó sai với ASP.NET Identity lib, nhưng tôi không thực sự biết nó và tôi không thể tìm thấy bất kỳ thông tin liên quan nào liên quan đến vấn đề của tôi.

Câu hỏi: Có ai biết vấn đề là gì hay ít nhất cách tốt nhất để khắc phục sự cố này là gì?

Cảm ơn

+0

Bạn cần ít nhất làm cho trang đăng nhập của bạn '[AllowAnonymous]' – tweray

+0

Trang đăng nhập đã có bộ lọc '[AllowAnonymous]' trong mẫu site. – Shtong

+0

Một nơi nào đó đang yêu cầu đăng nhập để thực sự hiển thị hành động đăng nhập. Nếu bạn đã thêm '[AllowAnonymous]' vào hành động đăng nhập, hãy kiểm tra bất kỳ hành động con nào đang được gọi bởi bố cục hoặc chế độ xem. Nếu bất kỳ trong số này nằm trong một bộ điều khiển với '[Authorize]' được thi hành, chúng cũng cần '[AllowAnonymous]'. –

Trả lời

10

Ok như vậy sau một đêm ngon giấc tôi đã kết thúc việc tìm kiếm những gì là sai: vấn đề là trong cấu hình IIS Express, mà đã không được thiết lập lại vì một lý do khi tôi tạo ra một dự án mới, và có lẽ thừa hưởng một cài đặt của dự án trước đó. Nó đã vô hiệu hóa xác thực vô danh và xác thực Windows được kích hoạt, không tương thích với web.config mặc định được tạo bởi mẫu, vì nó có chế độ xác thực được đặt là None. Vì vậy, IIS đã mong đợi xác thực Windows trước khi bất kỳ tài nguyên nào được phân phát và trang web không yêu cầu thông tin đăng nhập Windows. Và ở đó chúng ta có một vòng lặp vô hạn.

TL; DR Nếu bạn có cùng sự cố đó, hãy kiểm tra thuộc tính dự án (chọn dự án trong trình khám phá giải pháp và nhấn F4). Mục nhập Anonymous Authentication phải được đặt thành Enabled và mục nhập Windows Authentication sẽ được đặt thành Disabled. Lưu ý rằng điều này chỉ hợp lệ nếu bạn không chọn Xác thực Windows trong cài đặt mẫu!

+0

Như một lưu ý phụ cho người mới bắt đầu, sử dụng mẫu có nghĩa là bạn sử dụng dữ liệu dựa trên Javascript và AccountController.cs của bạn yêu cầu [Ủy quyền] cho bất kỳ việc sử dụng API Web nào được gọi qua phần ~/bundle/Knockout của tệp Chỉ mục của Trang chủ của bạn : http://stackoverflow.com/questions/24269028/vs2013-asp-net-mvc-single-page-application-template-auto-redirection – JosephMCasey

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