1
我在管理员区域(部分)中拥有控制器名称UserController。我可以在其中将角色管理员(A)分配给用户(U)或将用户(U)分配给管理员(A)。身份验证和授权角色问题
当我改变它在数据库中成功更新也是任何用户的角色,但是当我从那个用户,其中我已经改变了角色的应用程序登录,从而使用户包含它的老role.I已经把破还指出变量'角色'正在返回以前的角色。我很惊讶,'角色'变量如何恢复其旧角色。
public override string[] GetRolesForUser(string username)
{
string[] role = { obj.GetAll().Where(x => x.EmailAddress == username).FirstOrDefault().Role };
return role;
}
用户控制器AssignRole行动在这段代码我更新的角色
public ActionResult AssignRole(int id, string role)
{
try
{
BOL.tbl_Login user = (BOL.tbl_Login)obj.login.GetById(id);
if (role == "A")
{
user.Role = "U";
}
else if (role == "U")
{
user.Role = "A";
}
else
{
user.Role = "U";
}
obj.login.Update(user);
TempData["Msg"] = "Operation Successfully!";
}
catch (Exception ex)
{
TempData["Msg"] = "Error " + ex.Message;
}
return RedirectToAction("_Index");
}
和我还使用
[Authorize(Roles = "A")]
我认为实体框架不返回最新的数据。
这里是数据访问层的代码
public override void Update(T data)
{
obj.Entry(data).State = EntityState.Modified;
obj.Configuration.ValidateOnSaveEnabled = false;
Save();
obj.Configuration.ValidateOnSaveEnabled = true;
}
谢谢哥们,AsNoTracking解决我的问题.. –