授权标签在不同的 DLL 中不起作用
Authorize Tag not working in different DLL
我有两个项目
- 网络Api
- DLL Class 库
Web Api 引用 类 和 DLL 中的方法。 Web Api 还使用开箱即用的 ASP.NET 安全身份。
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 方法中不起作用。
我可能完全不知道呼叫用户的身份是如何传递的。我想问:
调用用户身份是否在 DLL 之间传递?
如果没有,在我的例子中有没有办法根据用户身份保护 DLL 方法?
[Authorize]
是一个只能与操作方法一起使用的属性。它不会为您的自定义静态方法触发。
看看它的签名:
[AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Method, Inherited = true,
AllowMultiple = true)]
public class AuthorizeAttribute : FilterAttribute, IAuthorizationFilter
因为它继承自 FilterAttribute
你知道它可以被触发,例如对于 OnActionExecuting
和 OnActionExecuted
过滤方法。
您的代码正在编译,因为此属性允许在方法中使用。这并不意味着它在控制器上下文之外使用时具有任何功能。
老实说,我不明白您需要允许特定用户访问 DLL。如果这是某种 class 库,您应该只在 class 使用外部 DLL 方法的系统中检查访问权限。
我有两个项目
- 网络Api
- DLL Class 库
Web Api 引用 类 和 DLL 中的方法。 Web Api 还使用开箱即用的 ASP.NET 安全身份。
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 方法中不起作用。
我可能完全不知道呼叫用户的身份是如何传递的。我想问:
调用用户身份是否在 DLL 之间传递?
如果没有,在我的例子中有没有办法根据用户身份保护 DLL 方法?
[Authorize]
是一个只能与操作方法一起使用的属性。它不会为您的自定义静态方法触发。
看看它的签名:
[AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Method, Inherited = true,
AllowMultiple = true)]
public class AuthorizeAttribute : FilterAttribute, IAuthorizationFilter
因为它继承自 FilterAttribute
你知道它可以被触发,例如对于 OnActionExecuting
和 OnActionExecuted
过滤方法。
您的代码正在编译,因为此属性允许在方法中使用。这并不意味着它在控制器上下文之外使用时具有任何功能。
老实说,我不明白您需要允许特定用户访问 DLL。如果这是某种 class 库,您应该只在 class 使用外部 DLL 方法的系统中检查访问权限。