我有一個運行MVC 3(Razor)應用程序與表單身份驗證。我可以在部分視圖中輕鬆調用@ User.Identety.Name,它將返回登錄用戶的名稱。但是,如果我叫User.Identety.Name在控制它返回null ...MVC 3表單身份驗證User.Identity.Name返回false
,如果我嘗試檢查(User.Identity.IsAuthenticated),它總是返回空...
我現在很困惑。 ..
登錄時,我調用登錄方法,該方法調用SignIn方法,我在其中設置身份驗證Cookie,理論上必須包含所需的所有數據。
我在做什麼錯?
[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
if (ModelState.IsValid)
{
if (MembershipService.ValidateUser(model.UserName, model.Password))
{
FormsService.SignIn(model.UserName, true);
if (!String.IsNullOrEmpty(returnUrl))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Index", "Home");
}
}
else
{
ModelState.AddModelError("", "Brugernavn eller kodeordet er forkert!");
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
public void SignIn(string userName, bool createPersistentCookie)
{
if (String.IsNullOrEmpty(userName)) throw new ArgumentException("Value cannot be null or empty.", "userName");
FormsAuthentication.SetAuthCookie(userName, true);
}
//Upload method is in an Employee Controller.
public string Upload(HttpPostedFileBase fileData)
{
if (User.Identity.IsAuthenticated)
{
var fileName =
this.Server.MapPath("~/uploads/" + HttpContext.User.Identity.Name + "/" +
System.IO.Path.GetFileName(fileData.FileName));
fileData.SaveAs(fileName);
}
return "ok";
}
UPDATE
好看起來像我發現這個問題!
如果我在ActionResult方法中調用User.Identety.Name,它將返回沒有問題的用戶名。但如果我在Upload方法中調用它返回字符串,它搞砸了!
<script type="text/javascript">
$(window).load(
function() {
$("#fileuploader").fileUpload({
'uploader': '/Scripts/uploader.swf',
'cancelImg': '/Images/cancel.png',
'buttonText': 'Vælg StykListe CSV Fil',
'script': '@Url.Action("Upload","Solar")',
'folder': '/uploads',
'fileDesc': 'Image Files',
'fileExt': '*.jpg;*.jpeg;*.gif;*.png;*.csv',
'multi': true,
'auto': true
});
}
);