我有一个MVC 4应用程序,AccountController正在使用Authorize属性。当用户在登录页面上时,有一个Teller发布日期在他们登录后使用。我试图捕获名称字段上的更改事件,该字段工作正常,并且触发Jquery函数以获取发行日期。
这里是JQuery的阿贾克斯功能:
function update_issue_date() {
var userName = $('#UserName').val();
$.ajax({
type: 'GET',
url: '/Account/GetIssueDate',
async: true,
data:
{
userName: userName
},
success: function(data) {
$('#IssueDate').val(__format_date_for(new Date(data.issueDate)));
}
});
在的AccountController我有如下因素作用:
[AllowAnonymous]
public ActionResult GetIssueDate(string userName)
{
var issueDate = DateTime.Now.Date;
if (userName.Length > 0)
{
var user = userRepo.GetUser(userName);
//var user = user_repository.get_all().FirstOrDefault(x => x.user_name == userName);
var currentDate = DateTime.Now.Date;
issueDate = (user == null || user.IssueDate < currentDate) ? currentDate : user.IssueDate;
}
return Json(new { issueDate = issueDate.ToShortDateString() }, JsonRequestBehavior.AllowGet);
}
这是会发生什么,如果我有在网络禁用授权的东西。 config,那么这个函数按原样返回正确的发布日期。但是,如果我已启用Authorize事件,那么GetIssueDate Action似乎不会被解雇。我得到了登录页面的HTML。
我觉得即使我在这个Action上有[AllowAnonymous]属性,应用程序在从Jquery函数中调用时似乎忽略了这一点,并且不允许它触发。
有没有办法解决这个问题,或者是另一种方法来做我想做的事情?
谢谢。
+0
欢迎StackOverflow上。如果答案解决了您的问题,[您可以接受此答案](/a/5235/170863)。然后,您也可以用灰色向上箭头向上投票一个或多个答案。 –
-07-26 23:18:07
+0
您应该不必* AllowAnonymous *才能使Ajax调用正常工作。如果会话已建立,会话cookie将与请求一起发送(您*使用会话cookie?)。 –
-07-26 23:26:15
+0
我知道我使用cookie做的唯一事情是在登录时使用FormsAuthentication.SetAuthCookie,但用户在这一点上并未真正登录。你必须原谅我,在这个Web编程方面还是一个新鲜事。 –
-07-26 23:28:35