Ninject с ActionFilters и SignalR

Имам уеб услуга, базирана на mvc3, която използва Ninject за управление на своите филтри за действие, което работи добре. Сега обаче трябва да внедря хъб SignalR в микса и в идеалния случай искам да използвам повторно съществуващите филтри за действие на тези нови хъбове, ако е възможно.

Един от най-важните филтри е филтърът CookieAuthentication, който основно проверява дали дадена заявка съдържа правилната бисквитка за удостоверяване, ако бисквитката не присъства или е валидна, задава обекта filtercontext.result на персонализиран обект UnauthorisedResult. Така че в този пример можете ли да използвате тази функционалност, тъй като SignalR, доколкото ми е известно, няма представа за резултатите от действието, така че не съм сигурен дали автоматично ще отмени заявки и т.н.

Опитах да търся в Google, но не мога да намеря много информация по темата, предполагам, че не можете да ги смесите, тъй като и двете рамки споделят само основната ASP рамка, а не MVC рамката.


person Grofit    schedule 17.07.2013    source източник


Отговори (1)


не можеш ActionFilters са само за MVC и не се изпълняват при използване на SignalR. Единствената обща основа (както разбирате) е самият ASP.NET. Това означава, че можете да напишете HttpModule, но не и филтър за действие.

Можете да научите повече за сигурността на SignalR тук: http://www.asp.net/signalr/overview/security

person davidfowl    schedule 17.07.2013
comment
Ах, просто човече, бързах, така че трябваше да спомена, че вече проверих документацията за осигуряване на хъбове и т.н., но изглежда, че всичко използва оторизацията по подразбиране на ASP.NET, което се надявах да избегна и просто да имам начин за проверка на бисквитката спрямо db за заявките, за които функционалността вече съществува в рамката, която използвам, и всичко се основава само на HttpRequest обекти. Въпреки това AuthoriseAttribute изглежда работи срещу потребител, а не срещу http заявка, така че трябва ли просто да получа HttpContext.Current.Request там и да игнорирам потребителския обект? - person Grofit; 17.07.2013
comment
Не, използва удостоверяване на хоста. В този случай хостът е ASP.NET и в ASP.NET можете да закачите AuthorizeRequest на IHttpModule и да зададете IPrincipal в контекста да бъде каквото искате. - person davidfowl; 17.07.2013