2015-02-02 31 views
7

Disclaimer: đây là lần đầu tiên của tôi với ASP.NET MVC 5Authorization không làm việc trong ASP.NET MVC 5

Tôi không có ý tưởng tại sao nó không hoạt động. Tôi không thể tải ứng dụng MVC5 của mình để ủy quyền cho người dùng. Tôi đã làm điều này trong các phiên bản trước (2, 3 và 4) nhưng tôi dường như không thể làm cho nó hoạt động trong OWIN.

Tôi đang sử dụng IIS địa phương với các tính năng cần thiết cho phép:

IIS Features

EDIT:

Tôi đang sử dụng SSL trên IIS và RequireHttps tại C#

Đây là mã:

protected void Application_Start() 
{ 
    GlobalFilters.Filters.Add(new AuthorizeAttribute()); 
} 

Startup.Auth.cs

app.UseCookieAuthentication(new CookieAuthenticationOptions 
{ 
    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
    LoginPath = new PathString("/admin/account/login") 
}); 
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie); 
app.UseGoogleAuthentication(); 

Mặc dù tôi đang sử dụng toàn cầu Authorize Tôi cố gắng để "ép" nó để xem nếu điều này là vấn đề:

public class HomeController : Controller 
{ 
    [Authorize] 
    public ActionResult Index() 
    { 
     return View(); 
    } 
} 

Không may mắn ... Tôi không chắc chắn rằng nó là cần thiết với OWIN, nhưng tôi thậm chí đã thử bật xác thực biểu mẫu:

<authentication mode="Forms" /> 

EDIT [2]

Vâng, tôi phát hiện ra vấn đề ... IIS! Cuối cùng! Bây giờ, có ai biết cách sửa lỗi đó không? Tôi có cần bất cứ điều gì đặc biệt để chạy OWIN trên IIS không? Tôi có thể làm việc bây giờ, nhưng chẳng mấy chốc tôi sẽ phải triển khai các ứng dụng và sẽ lẽ chạy vào cùng một vấn đề trong các máy chủ ...

Tôi đã đọc những:

How do you login/authenticate a user with Asp.Net MVC5 RTM bits using AspNet.Identity?

Authorize attribute not working MVC 5

Bất kỳ ý tưởng nào?

+0

bạn có nhận được bất kỳ lỗi hoặc chính xác hơn kết quả bạn nhận được là gì? –

+0

@StephenReindl không có lỗi, tôi có thể truy cập trang tôi không nên (ủy quyền thuộc tính). Tôi chỉ thấy trang ở nhà/chỉ mục – eestein

+0

hmmm ... thú vị ... Tại sao bạn thêm AuthorizeAttribute trong application_start? Mã khởi động của tôi đang thực hiện những điều sau trong một hàng FilterConfig.RegisterGlobalFilters (GlobalFilters.Filters); RouteConfig.RegisterRoutes (RouteTable.Routes); BundleConfig.RegisterBundles (BundleTable.Bundles); Phần còn lại được thực hiện trong Startup.cs ... –

Trả lời

2

Vì ứng dụng của bạn chạy với IIS, hãy thử thêm Microsoft.Owin.Host.SystemWeb gói nuget vào ứng dụng của bạn.

+0

Cảm ơn bạn, nhưng đó không phải là nó. Tôi đã đọc về nó một thời gian trước và mặc dù tôi đã cài đặt gói đó tôi đã cập nhật nó không có kết quả. – eestein

2

Hãy thử bài viết này, nó hữu ích cho tôi OWIN setup. Tôi không chắc liệu bạn có sử dụng các xác nhận quyền sở hữu khi bạn không hiển thị nó trong câu hỏi hay không, điều đó rất quan trọng để tạo vé xác thực để xác thực

Ngoài ra, vì bạn đang sử dụng SSL, hãy chú ý đến thuộc tính CookieSecure nếu vẫn không hoạt động CookieSecureOption

app.UseCookieAuthentication(new CookieAuthenticationOptions 
{ 
    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
    LoginPath = new PathString("/admin/account/login") 
    CookieSecure = CookieSecureOption.Never 
}); 

tôi hy vọng nó sẽ giúp

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