在 asp.net Web API 中,我正在使用操作过滤器属性,我覆盖了 OnActionExecuting
并OnActionExecuted
在标头中验证从客户端发送的令牌,当通过任何控制器添加该属性时,我可以在将请求传递给控制器中的函数之前拦截请求,直到现在一切都运行良好,但如果我在集线器类上添加与调试时相同的属性,则不正确 i可以看到集线器上的方法首先被执行,然后OnActionExecuting
和OnActionExecuted
。如何解决这个问题。
[OurAuthorization]
public class NotificationHub : Hub
{
private AccPlusEntities1 db = new AccPlusEntities1();
public void TrnAddedNotfication(string GroupName)
{
Clients.OthersInGroup(GroupName).AddedNotfication();
}
public void TrnDeletedNotfication(string GroupName)
{
Clients.OthersInGroup(GroupName).DeletedNotfication();
}
public void JoinGroup(string AccName)
{
var x = BaseController.CurrentUser.AccId;
Groups.Add(Context.ConnectionId, AccName);
}
public void LeaveGroup(string AccName)
{
Groups.Remove(Context.ConnectionId, AccName);
}
public void Lock(int TrnId)
{
}
}
操作筛选器属性不适用于你发现的 SignalR 中心。幸运的是,SignalR 确实提供了它自己的 AuthorizeAttribute,它实现了相同的目的。
与 ActionFilterAttribute
一样,您可以对 SignalR 的 AuthorizeAttribute 进行子类化并重写 UserAuthorized 方法。