2011-04-12 2 views
41

내가이 (가) 작성하는 화면/업데이트 사용자 세부 사항에 다음과 같은 요소ASP.Net MVC3 Html.PasswordFor 내보기에서

@Html.PasswordFor(model => model.Password) 

을 채우지 않습니다. 사용자를 업데이트하려고 할 때이 필드는 비어 있습니다. 이 요소를 TextBoxFor로 변경하면 데이터를 가져옵니다. 암호 필드를 채우려면 어떻게해야합니까?

+8

상자에 넣을 수 있도록 사용자의 암호가 있다면, 당신은 거의 용서할 수없는 악을 저지른 것입니다. – SLaks

+0

나는 암호가 이미 존재하는지 여부를 나타 내기 위해 점이나 점을 표시하는 암호 필드를 원하면이 경우에 유효한 경우라고 생각합니다. 모델을 채울 때'model.Password = String.IsNullOrEmpty (user.Password)? "": "********";하지만 PasswordFor는 값을 사용하지 않습니다. 따라서 가치가 존재하는지 여부를 알 수는 없습니다. – xr280xr

답변

35

이것은 설계된 것과 같습니다. 우발적 인 재 제출을 방지하고 페이지에 암호화되지 않은 암호가 포함되지 않도록 암호가 채워지지 않습니다. 비밀 번호를 다시 게시하는 경우 분명히 비밀 번호가 잘못되었습니다.

귀하의 경우 데이터를 입력하는 확장자를 만들거나 password 형식의 HTML 입력을 사용할 수 있습니다.

4

MVC는 이유 때문에이 작업을 수행하지 못하도록합니다. 사용자 암호는 암호화되지 않고 해시되지 않아야하므로 실제로이 작업을 수행해서는 안됩니다.

<input type="password" name="Password" id="Password" value="@Model.Password" /> 
+0

평범한 가해자에 대해서는 좋은 사이트이지만 "의견"섹션 텍스트는 거의 볼 수 없습니다. 이것 좀 봐 : http : //plaintextoffenders.com/about/ .. 어쩌면 그것은 말장난이야?! –

121

전술 한 바와 같이, 보안을 위해이 일을하지 않도록하는 것이 좋습니다 : 당신의 목표는하지만 http://plaintextoffenders.com/에 끝을 종료하는 경우, 당신은 뭔가를 할 수 있습니다. 당신은 아직도 당신이 현재 검증이 실패한 곳에서 진행 있도록 암호를 유지하려는 경우, 당신은 HTML 속성 매개 변수를 사용하여 HTML 도우미를 사용할 수 있습니다

 Html.PasswordFor(x => x.Password, new { value = Model.Password}) 
+0

감사합니다. 감사합니다. 감사합니다. –

+14

이 답변은 실제로 질문에 대답하고 있습니다! – Stian

+0

매트 매트가 남자입니다! – contactmatt

0

나는이 workaound을 발견했다.

@model User 
@{ 
    @Html.Label(Model.Username, new { @class = "label" }) 
    @Html.TextBoxFor(Model => Model.Username, new { @class = "form-control" }) 

    @Html.Label(Model.Password, new { @class = "label" }) 
    @Html.TextBoxFor(Model => Model.Password, new { @class = "form-control make-pass" }) 
} 

<script type="text/javascript"> 
    $(".make-pass").attr("type", "password"); 
</script> 

암호를 입력하지 않고도 암호를 입력 할 수 있습니다.

+0

멋지다! 스크립트를 사이트에 넣을 수 있습니다.js' 그리고 어떤 암호 (그것을 내 요구 사항)에 사용 –