編集:アプローチを変更しました。現在、MessageHandlers を使用しています。掘る方向を教えてくれた Raciel に感謝します。
私にとって非常に役立つこれらのリンク: MessageHandlers の概要 Using own Principal classes
WebApi プロジェクトがあり、それにカスタム認証を提供する必要があります。フロントエンドからの各リクエストには、特別な Token オブジェクトが追加されます。そんな感じ:
SendApiRequest: function (controller, action, data, successCallback, failureCallback) {
var url = ROUTER.GetApiUrl(controller, action);
data.Token = TOKEN;
jQuery.ajax({
type: 'POST',
dataType: 'json',
url: url,
data: data,
success: function (result) {
if (typeof successCallback == 'function') {
successCallback(result);
}
},
error: function (result) {
if (typeof failureCallback == 'function') {
failureCallback(result);
}
}
});}
AuthorizationAttribute があり、リクエストから Token オブジェクトをシリアル化する必要があります。しかし、それを自動的に行う方法が見つかりません。
public class CustomAuthorizationAttribute : AuthorizeAttribute
{
public override void OnAuthorization(HttpActionContext context)
{
UserToken token = null;
//HOW TO SERIALIZE token object from context?
}
}
UserToken クラスは次のようになります。
public class UserToken
{
public Int64 TokenID;
public int UserID;
public string TokenValue;
public string IP;
public string Hash;
public DateTime CreatedOn;
public DateTime ActionOn;
}
問題は、HttpActionContext からカスタム オブジェクトをシリアル化する方法です。
ありがとうございました。