gpt4 book ai didi

asp.net-mvc-4 - MVC4 - 在后 Controller 操作期间,WebSecurity.CurrentUserId 正在失去它的值,并变为 -1

转载 作者:行者123 更新时间:2023-12-01 06:32:29 25 4
gpt4 key购买 nike

不知何故,在这个 Controller 中,在 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);
}
}

最佳答案

总是会返回-1,你需要的是下面的代码

 int currentuserid = WebSecurity.GetUserId(username);

然后您可以验证上面的用户 ID 是否与模型中的用户 ID 匹配,以防止用户更改其他用户代码

作为附加。我在我的基本 Controller 中使用它:
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);
}

关于asp.net-mvc-4 - MVC4 - 在后 Controller 操作期间,WebSecurity.CurrentUserId 正在失去它的值,并变为 -1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18744973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com