我有一个.NET MVC5网站,用户使用Microsoft Identity登录。我有多个表单帖子,用于在网站上添加和编辑项目。我想知道我应该在哪个订单中进行验证: -
我目前有以下代码可以使用,但似乎是鸡和蛋的情况': -
var user = UserAccountFunctions.GetUser(User);
if (user != null)
{
ClientProfile profile = ClientProfile.GetUser(user.Id, db);
if (profile != null)
{
if (ModelState.IsValid)
{
// Do logic here
}
}
}
在检查身份验证之前,我应该先交换此代码以检查模型,以便我有: -
if (ModelState.IsValid)
{
var user = UserAccountFunctions.GetUser(User);
if (user != null)
{
ClientProfile profile = ClientProfile.GetUser(user.Id, db);
if (profile != null)
{
// Do logic here...
}
}
}
或者这里没有区别吗?我在整个网站上重复了这段代码,所以寻找哪个更好的选择?我目前使用的是顶级的,因为我觉得除非经过身份验证,否则你不应该尝试检查模型吗?
这里有什么建议吗?
谢谢!
答案 0 :(得分:1)
以下是更新用户电子邮件的示例:
[AcceptVerbs(HttpVerbs.Post)]
[Authorize]
[ValidateAntiForgeryToken()]
public ActionResult emailupdate(UserEmailEditModel editmodel_post)
{
if (!ModelState.IsValid)
{
// redirect to email view and show errors
}
// check if posted id is the same as stored in session
if (User.Identity.GetUserId() != editmodel_post.user_id.ToString())
{
// redirect to email view and show errors
}
}
所以