i有一个.NET MVC5网站,其中用户使用Microsoft Identity记录。我有多个表单帖子,用于在整个网站上添加和编辑项目。我想知道我应该在以下方面执行哪些顺序: -
- modelState.isvalid,然后user.Identity.isauthenticated
- 用户。
我目前有以下代码可行,但似乎是"鸡肉和鸡蛋"的情况: -
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...
}
}
}
还是这里根本没有区别?我在整个网站中经常重复此代码,因此寻找哪个更好的选择?我目前使用顶部,因为我觉得除非经过身份验证,否则您甚至不应该尝试检查模型吗?
这里有任何建议吗?
谢谢!
这是更新用户电子邮件的示例:
[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
}
}
so
- 使用授权属性
- 使用 valiantiforgerytoken 属性
- 检查 ModelState
- 检查会话或数据库