Javascript 在AJAX调用中处理身份验证

Javascript 在AJAX调用中处理身份验证,javascript,asp.net-mvc,Javascript,Asp.net Mvc,我正在控制器中使用以下代码 [HttpPost] public ActionResult SearchResultsAll(string keyword) { System.Threading.Thread.Sleep(1000); string data = "Search results for " + keyword; return Json(data, JsonRequestBehavior.AllowGet); } 并尝试如下所示的AJAX调用 $.ajax({ url: "/

我正在控制器中使用以下代码

[HttpPost]
public ActionResult SearchResultsAll(string keyword)
{
 System.Threading.Thread.Sleep(1000);
 string data = "Search results for " + keyword;
 return Json(data, JsonRequestBehavior.AllowGet);
}
并尝试如下所示的AJAX调用

$.ajax({
url: "/Home/SearchResultsAll",
type: 'POST',
data: {
 keyword: searchString                        
},
  success: function (data) {
  console.log(data);
  },
  error: function (jqXHR) { 
  console.log("ERROR");},
  complete: function (jqXHR, status) { 
  console.log("DONE"); 
  }
});
我没有取回字符串,而是为我的
登录
页面获取HTML代码-是,身份验证在我的
HomeController上处于活动状态


如何在AJAX调用中解决这个问题?

全局应用授权的问题是,您必须先登录(授权),然后才能登录或注册

[HttpPost]
[AllowAnonymous]
public ActionResult SearchResultsAll(string keyword)
{
 System.Threading.Thread.Sleep(1000);
 string data = "Search results for " + keyword;
 return Json(data, JsonRequestBehavior.AllowGet);
}

AllowAnonymous
属性,帮助您保护整个ASP.NET MVC 4网站或控制器,同时提供方便的方法,允许匿名用户访问某些控制器操作,如登录和注册操作

使用
AllowAnonymous属性
(即
[AllowAnonymous]
)如果您想允许匿名用户使用搜索表单。或者,如果
SearchResultsAll()
确实需要授权,那么呈现该页面的GET也应该有一个
[Authorize]
attributeCheers,它起作用了-我认为使用
[AllowAnonymous]
for search可以,因为它只返回基于用户ID的结果