簡體   English   中英

授權標記在其他DLL中不起作用

[英]Authorize Tag not working in different DLL

我有兩個項目

  • Web API
  • DLL類庫

Web Api引用DLL中的類和方法。 Web Api還使用現成的ASP.NET Identity來確保安全。

Web Api控制器方法由[Authorize]標簽保護,如下所示:

[Authorize]
[HttpGet]        
[Route("", Name = "GetStuff")]        
public IHttpActionResult Get()        
{            
List<Stuff> Stuffs= LookUpBusinessLogic.StuffGetAll();            
return Ok(Stuffs);        
}

DLL還具有以下標記,以確保其方法調用的安全性:

[Authorize]
public static List<Stuff> StuffGetAll()        
{
//Get data from somewhere
...            
return Stuffs;        
}

我面臨的問題是DLL方法中的authorize標記不起作用。

我可能完全不知道呼叫用戶的身份是如何傳遞的。 我想問一下:

主叫用戶身份是否在DLL之間傳遞?

如果沒有,在我的示例中是否有一種方法可以基於用戶身份保護DLL方法?

[Authorize]是僅應與操作方法一起使用的屬性。 您的自定義靜態方法不會觸發該事件。

看一下它的簽名:

[AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Method, Inherited = true, 
AllowMultiple = true)]
public class AuthorizeAttribute : FilterAttribute, IAuthorizationFilter

因為它繼承自FilterAttributeFilterAttribute您知道它可以被觸發,例如針對Filter的OnActionExecutingOnActionExecuted方法。

您的代碼正在編譯,因為此屬性允許在方法中使用。 這並不意味着在控制器上下文之外使用時它具有任何功能。

老實說,我不理解您是否需要允許特定用戶的DLL訪問。 如果這是某種類庫,則應僅在使用外部DLL方法的類中檢查訪問。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM