2013-10-29 21 views
6

Tôi đang cố gắng sử dụng OWIN. Tôi đã tạo ra hai dự án MVC 5. Một với xác thực bằng cách sử dụng Aspnet.Identity và cái kia bắt đầu như một dự án trống.MVC 5 Chuyển hướng đến trang đăng nhập Không hoạt động với OWIN

tôi đã thêm dòng sau vào các dự án emptyp:

điều khiển tài khoản
  • với một hành động Login và coresponding xem

  • Startup.cs và một Startup.cs phần với

public partial class Startup 
{ 
     public void ConfigureAuth(IAppBuilder app) 
     { 
      app.UseCookieAuthentication(new CookieAuthenticationOptions 
      { 
       AuthenticationType = "ApplicationCookie", 
       LoginPath = new PathString("/Account/Login") 
      }); 
     } 
    } 

Tôi đã trang trí Giới thiệu về hành động trong Bộ điều khiển chính với [Tác giả ize] thuộc tính trong cả hai dự án.

Khi tôi chạy dự án đầu tiên và đi tới màn hình Giới thiệu trước khi đăng nhập, nó chuyển hướng đến hành động đăng nhập như mong đợi. Khi tôi làm tương tự cho dự án thứ hai, tôi nhận được "Lỗi HTTP 401.0 - Không được ủy quyền" thay vì chuyển hướng.

Bất kỳ ý tưởng nào khiến nguyên nhân thứ hai hoạt động theo cách này?

+1

Bạn đã so web.config giữa hai dự án? –

+0

Tôi đã so sánh hai tệp web.config, nhưng tôi sẽ làm lại và báo cáo lại ... – Jeff

+0

@AlexDresko, cảm ơn sự giúp đỡ. Tôi đã tìm thấy một số khác biệt trong web.config mà tôi đã bỏ lỡ ngày hôm qua. Thật không may nó đã không giúp giải quyết vấn đề. – Jeff

Trả lời

5

Tôi đã tạo hai dự án tương tự mới và có thể tạo lại lỗi của bạn.

Trong dự án trống, tôi phải cài đặt Microsoft.Owin.Host.SystemWeb (thông qua Nuget) và một khi tôi đã làm điều này, tôi đã nhận được một loạt các lỗi trong lớp Startup.cs của tôi. Đã kết thúc với điều này:

[assembly: OwinStartupAttribute(typeof(v2.Startup))] 
namespace v2 
{ 
    public partial class Startup 
    { 
     public void Configuration(IAppBuilder app) 
     { 
      ConfigureAuth(app); 
     } 

     public void ConfigureAuth(IAppBuilder app) 
     { 
      app.UseCookieAuthentication(new CookieAuthenticationOptions 
      { 
       AuthenticationType = "ApplicationCookie", 
       LoginPath = new PathString("/Account/Login") 
      }); 
     } 
    } 
} 

Cuối cùng, Tôi bây giờ có khả năng đánh/nhìn thấy view Login của tôi khi tôi gọi là Về() phương pháp trang trí với các thuộc tính [Authorize].

Hy vọng điều này sẽ hữu ích! Vince

+2

cảm ơn vì đã dành thời gian để thử điều này. Tôi bắt đầu làm sạch một lần nữa và cuối cùng đã có thể theo dõi hai vấn đề khác nhau. Trong một dự án mà tôi đã thử điều này trên tôi đã có "AuthenticationMode = AuthenticationMode.Passive" trong CookieAuthenticationOptions. Điều này đã bị bỏ lại từ cái gì khác mà tôi đang cố gắng. Trong một dự án khác, tôi quên gọi Startup.ConfigureAuth() từ Startup.Configuration()! Vì vậy, về cơ bản hai sai lầm bất cẩn. Tôi đang đi đúng hướng và cố gắng tìm ra vấn đề tiếp theo .... – Jeff

+0

Bản cập nhật nuget đã sửa lỗi cho tôi – Scott

+0

Đây có phải là lỗi không? – Jakov

6

mỗi ASP.NET MVC 5 Web.config: "FormsAuthenticationModule" or "FormsAuthentication"

<system.webServer> 
    <modules> 
     <remove name="FormsAuthentication" /> 
    </modules> 
</system.webServer> 

cho sự an toàn thêm tôi rời cả "typo" xử lý ở (trong trường hợp Microsoft thay đổi sau nó đem lại cho tôi)

<system.webServer> 
    <modules> 
    <remove name="FormsAuthenticationModule" /> 
    <remove name="FormsAuthentication" /> 
    </modules> 
</system.webServer> 
+0

dòng mã này sẽ làm gì User

+0

nhấp vào liên kết trong câu trả lời của tôi, nơi nó được giải thích. Câu trả lời của tôi cũng đã bị xóa nên nó không có ở đó trước đây. –

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