2017-10-05 25 views
0

我的應用程序正在將參數記錄到每個操作方法調用中,除了記錄用戶名和密碼的Login()方法外,這是可以的。有沒有辦法排除這個?ControllerActionInvoker將密碼記錄爲ASP.NET核心中的參數

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 
+0

考慮使用模型類而不是單獨的參數。這樣,只有模型類實例將被記錄。 – poke

+0

這很好。感謝您的建議。如果您發佈答案,我會接受。 – Arrkaye

回答

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) 
    { 
     // … 
    } 
} 

這也允許您使用驗證屬性和驗證模型狀態在你的控制器行動的開始。