我正在使用.net核心上的web api。我试图验证/重新验证模型 在模型中添加其他数据后(即添加当前登录用户的用户名后)。
让我们说这是我的控制者的行动
public function delete_std($std_id)
{
$this->load->model('std_model');
$this->std_model->delete_std($std_id,$std_image);
redirect('std_main/view_std');
}
以下是我用于身份验证方案的代码:
[Authorize]
[HttpPost]
public void Update([FromBody]UpdateUser User)
基本上我正在努力实现这个流程: 发布请求 - >批准─>将用户ID添加到模型中 - >验证模型。
因此,在获得授权后,我需要先添加string token = Context.Request.Query["token"];
if (token == null) return AuthenticateResult.Fail("No JWT token provided");
try
{
var principal = LoginControl.Validate(token);
return AuthenticateResult.Success(new AuthenticationTicket(principal, SchemeName));
}
catch (Exception)
{
return AuthenticateResult.Fail("Failed to validate token");
}
并且只需要验证模型,之后我可以在新更新的模型上使用User.UserName = CurrentUserName
对象。
截至目前,我正在尝试以下方法:
ModelState
目前,两个实例[HttpPost]
public async Task Update([FromBody]UpdateUser User)
{
User.UserName = "hello";
bool valid = await TryUpdateModelAsync(User);
valid = TryValidateModel(User);
}
均为false,valid
表示需要ModelState
。我在UpdateUser中添加的唯一验证是在模型中添加UserName
。
答案 0 :(得分:0)
我通过在调用TryValidateModel
之前清除模型来实现它。
[HttpPost]
public async Task Update(UpdateUser User)
{
User.UserName = "hello";
ModelState.Clear();
TryValidateModel(User);
// ModelState is now reset
}