[英]Authorize Tag not working in different 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
因為它繼承自FilterAttribute
, FilterAttribute
您知道它可以被觸發,例如針對Filter的OnActionExecuting
和OnActionExecuted
方法。
您的代碼正在編譯,因為此屬性允許在方法中使用。 這並不意味着在控制器上下文之外使用時它具有任何功能。
老實說,我不理解您是否需要允許特定用戶的DLL訪問。 如果這是某種類庫,則應僅在使用外部DLL方法的類中檢查訪問。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.