ControllerActionInvoker将密码记录为ASP.NET Core中的参数

时间:2017-10-05 08:19:55

标签: c# asp.net-core

我的应用程序正在记录每个操作方法调用的参数,除了记录用户名和密码的Login()方法之外,这是可以的。有没有办法排除这个?

info: Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker[1]
  Executing action method Service.Auth.Api.Controllers.AuthController.Login (Service.Auth.Api) with arguments (USERNAME, PASSWORD) - ModelState is Valid

1 个答案:

答案 0 :(得分:1)

您应该考虑使用视图模型对象而不是传递单个参数。这样,ControllerActionInvoker将记录视图模型的实例,默认情况下不会公开用户信息:

public class LoginViewModel
{
    [Required]
    public string Username
    { get; set; }

    [Required]
    [DataType(DataType.Password)]
    public string Password
    { get; set; }
}
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Login(LoginViewModel model)
{
    if (ModelState.IsValid)
    {
        // …
    }
}

这也允许您使用验证属性并在控制器操作开始时验证模型状态。