をレスポンスヘッダのソリューションを好む:
[AuthorizeAjax]
public ActionResult GetNewData()
{
//controller logic here
}
プロジェクトに以下を追加することによりあなたが必要とするのは共有フォルダ内の "AjaxAccessError"という部分的なビューです。個人的に、私は実際のログオンページへのリンクを返します:)
これは役に立ちます。ポインタのための
namespace System.Web.Mvc
{
public class AuthorizeAjaxAttribute : AuthorizeAttribute
{
private bool _failedAuthorisation;
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if (!httpContext.User.Identity.IsAuthenticated)
{
_failedAuthorisation = true;
return false;
}
else
{
String[] RoleArray = Roles.Split(',');
foreach (var r in RoleArray)
{
if (httpContext.User.IsInRole(r))
{
_failedAuthorisation = false;
return true;
}
}
_failedAuthorisation = true;
return false;
}
}
public override void OnAuthorization(AuthorizationContext filterContext)
{
base.OnAuthorization(filterContext);
if (_failedAuthorisation)
{
filterContext.Result = new PartialViewResult { ViewName = "AjaxAccessError" };
}
}
}
}
歓声、そのうちの一つが適しているだろう、私は、ヘッダーのソリューションは、あなたが原因をFormsAuthenticationモジュールを返されて302で終わるしないでください最高のほか – jcvandan