私はAsp.net MVC4 Jquery ajaxを使用しており、リクエストヘッダーでトークンを渡しています...
例外は次のとおりです。提供された偽造防止トークンはユーザー "" 用でしたが、現在のユーザーは "UserName" です。
私はここの答えを試してみましたが、偽造防止トークンはユーザー "" を対象としていますが、現在のユーザーは 3 番目のソリューションの "ユーザー名" ですが、成功しません。
上記の回答に従って、最初の2つのステップを達成する方法を教えてください...
または他の解決策を教えてください...
//見る
<script type="text/javascript">
var JsTokenHeaderValue = '@Utils.TokenHeaderValue()';
</script>
//アンチバリデーション偽造トークン:
private Task<HttpResponseMessage> ValidateAntiForgeryToken(HttpActionContext actionContext, CancellationToken cancellationToken, Func<Task<HttpResponseMessage>> continuation)
{
try
{
string cookieToken = "";
string formToken = "";
IEnumerable<string> tokenHeaders;
if (actionContext.Request.Headers.TryGetValues("RequestVerificationToken", out tokenHeaders))
{
string[] tokens = tokenHeaders.First().Split(':');
if (tokens.Length == 2)
{
cookieToken = tokens[0].Trim();
formToken = tokens[1].Trim();
}
}
AntiForgery.Validate(cookieToken, formToken);
}
catch (System.Web.Mvc.HttpAntiForgeryException exception)
{
ErrorLogDA.LogException(exception);
actionContext.Response = new HttpResponseMessage
{
StatusCode = HttpStatusCode.BadRequest,
RequestMessage = actionContext.ControllerContext.Request
};
return FromResult(actionContext.Response);
}
return continuation();
}
ここで質問を更新しています。トークンはメンバーシップクラスによるものであり、ユーザーはログインせずに認証されます..私の場合、最初にページの読み込みを行い、次にCookieが値nullを取得し、2回目のページ読み込みCookieが.ASPXAUTHから値を取得します..それがトークンの問題である可能性がある理由です..ここにヘッダーのコントローラーメソッドがあります..
//ヘッダー部分 - コントローラー
public ActionResult UCHeader()
{
try
{
var ViewLogOnModel = new LogOnModel();
HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName];
if (authCookie == null)
{
ViewLogOnModel.LoggedInUserId = Guid.Empty;
return PartialView("UCHeader", ViewLogOnModel);
}
//Is Authenticated..
if (User.Identity.IsAuthenticated == true)
{
if (User.Identity.AuthenticationType == "Forms")
{
MembershipUser memberUser = Common.Utils.GetLoggedinUserInfo(this.User.Identity.Name);
if (memberUser != null)
{
Guid userId = (Guid)memberUser.ProviderUserKey;
ViewLogOnModel.LoggedInUserId = userId;
ViewLogOnModel.UserEmail = this.User.Identity.Name;
return PartialView("UCHeader", ViewLogOnModel);
}
else
{
ViewLogOnModel.LoggedInUserId = Guid.Empty;
return PartialView("UCHeader", ViewLogOnModel);
}
}
else
{
ViewLogOnModel.LoggedInUserId = Guid.Empty;
return PartialView("UCHeader", ViewLogOnModel);
}
}
else
{
ViewLogOnModel.LoggedInUserId = Guid.Empty;
return PartialView("UCHeader", ViewLogOnModel);
}
}
catch (Exception ex)
{
ErrorLogDA.LogException(ex);
Response.Redirect("~/ErrorUiLog/Index", false);
}
return null;
}