2015-06-03 17 views
12

Câu hỏi của tôi là phương thức AuthorizeCore hoạt động như thế nào?Phương thức AuthorizeCore hoạt động như thế nào?

Ví dụ khi tôi muốn tạo ra tùy chỉnh Ủy quyền cho thuộc tính tôi thấy rằng rất nhiều lập trình viên sử dụng mã này

var isAuthorized = base.AuthorizeCore(httpContext); 
if (!isAuthorized) 
    { 
    return false; 
    } 

và sau đó họ viết mã riêng của họ. Vì vậy, vai trò của đoạn mã này là gì và phương pháp này chỉ kiểm tra những người dùng windows như quản trị viên và người dùng được tạo khác trong quản lý máy tính nếu chúng tôi tùy chỉnh nó để sử dụng trong xác thực biểu mẫu.

Ngoài ra tôi tìm thấy điều này code nhưng tôi không hiểu tại sao nhà phát triển đã lưu trữ người dùng trong cookie và phiên thay vì chỉ phiên.

Trong PHP, tôi chỉ sử dụng để lưu trữ người dùng trong một phiên và kiểm tra xem anh ấy có tồn tại trong phiên hay không.

Trả lời

7

Nó được mã nguồn mở, mã có thể được tìm thấy ở đây:

https://github.com/ASP-NET-MVC/aspnetwebstack/blob/master/src/System.Web.Mvc/AuthorizeAttribute.cs

Và đây phương pháp cụ thể:

// This method must be thread-safe since it is called by the thread-safe OnCacheAuthorization() method. 
    protected virtual bool AuthorizeCore(HttpContextBase httpContext) 
    { 
     if (httpContext == null) 
     { 
      throw new ArgumentNullException("httpContext"); 
     } 

     IPrincipal user = httpContext.User; 
     if (!user.Identity.IsAuthenticated) 
     { 
      return false; 
     } 

     if (_usersSplit.Length > 0 && !_usersSplit.Contains(user.Identity.Name, StringComparer.OrdinalIgnoreCase)) 
     { 
      return false; 
     } 

     if (_rolesSplit.Length > 0 && !_rolesSplit.Any(user.IsInRole)) 
     { 
      return false; 
     } 

     return true; 
    } 

Hy vọng rằng sẽ giúp.

+0

cảm ơn, nhưng điều tôi không hiểu là, đoạn mã "user.Identity.IsAuthenticated" này phụ thuộc vào người dùng nào, nó có phụ thuộc vào người dùng được tạo trong quản lý máy tính không? –

+0

là người dùng của httpContext ("người sử dụng trình duyệt/ứng dụng khách") – less

+0

có thể chính xác hơn: Thuộc tính Người dùng cung cấp quyền truy cập có lập trình vào các thuộc tính và phương thức của giao diện IPrincipal. – less

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