不知何故,在这个控制器中,在SaveChanges之后,CurrentUserId变为-1。 数据发布工作,并且CurrentUserId具有它的登录值(例如8888),但在SQL插入之后,WebSecurity.CurrentUserId变为-1。任何线索?在调试期间,我找不到位置和原因。
// POST: /Account/Edit
[HttpPost]
[ValidateInput(false)]
public ActionResult Edit(UserProfile model)
{
if (ModelState.IsValid)
{
using (var context = new dbContext())
{
var id = WebSecurity.CurrentUserId;
var account = context.UserProfiles.Find(id);
UpdateModel(account);
context.SaveChanges();
return RedirectToAction("Index", "Account");
}
}
else
{
return View(model);
}
}
答案 0 :(得分:0)
将始终返回-1,您需要的是以下代码
int currentuserid = WebSecurity.GetUserId(username);
然后,您可以验证上面的用户ID是否与模型中的用户ID匹配,以防止用户更改其他用户代码
另外。我在我的基本控制器中使用它:
public int GetUserId()
{
var userid = "0";
if (Request.IsAuthenticated && User.Identity.Name != null)
{
var membershipUser = Membership.GetUser(User.Identity.Name);
if (membershipUser != null)
{
if (membershipUser.ProviderUserKey != null)
{
userid = membershipUser.ProviderUserKey.ToString();
}
}
}
return Convert.ToInt32(userid);
}