Установите значение входного тега с типом =»пароль», используя C # и ASP.Net

#c# #asp.net

#c# #asp.net

Вопрос:

Итак, у меня есть этот входной тег:

 <input type="password" id="password" name="password" runat="server" />
  

Я пытаюсь установить его значение, используя C # и ASP.Net перед загрузкой страницы, но я не могу заставить ее работать.

Ответ №1:

Не устанавливайте тип ввода в вашей разметке или ASP.NET очистит ввод перед его отображением. Вместо этого используйте следующую разметку:

 <input id="tbPassword" name="password" runat="server" />
  

…и следующий код в вашем коде-за:

 tbPassword.Value = "your password";
tbPassword.Attributes["type"] = "password";
  

Однако я настоятельно не рекомендую использовать этот подход. Во-первых, вы не должны хранить пароли в виде обычного текста. Это действительно плохая практика обеспечения безопасности.

Во-вторых, если вы просто собираетесь установить пароль в коде, зачем он вообще нужен? Ввод пароля предназначен для взаимодействия с пользователем (ввода пароля). Если вы сделаете это для них, то размещать его на странице бессмысленно.

Комментарии:

1. В качестве альтернативы, вы можете оставить тип в качестве пароля, но задать значение с помощью атрибутов, например tbPassword.Attributes["value"] = "secret";

2. Настройка Attributes["value"] не работает, хотя решение Кевина работает. (И замечания по безопасности тоже работают, 1)

3. @Jeff, у меня это отлично работало (когда я обнаружил, что занимаюсь подобными вещами), но это было в .NET 2.0 — и, возможно, это зависит от того, когда вы это сделаете. В любом случае, это взлом.

4. @harpo — вы можете сделать что-то подобное, но вам нужно подклассировать текстовое поле и переопределить его поведение перед отображением (как описано в «ASP.NET Текстовое поле пароля» ).

5. Какая боль, но работает отлично. Я бы хотел, чтобы Microsoft предоставила нам свойство, чтобы отключить это поведение по умолчанию вместо этого. В моем случае я просто хочу, чтобы поле пароля оставалось полем, если пользователь отправляет форму с недопустимой информацией. Поскольку все это происходит через SSL, не похоже, что это реальная проблема безопасности при таком использовании. Я думаю, что если пользователь «просмотрит исходный код», он увидит его в виде обычного текста, но браузер не должен кэшировать эти страницы в любом случае. Я вижу множество сайтов, которые также работают таким образом.

Ответ №2:

Вы можете задать значение параметра <asp:TextBox> using TextBox.Attributes.Add , затем задать value свойство для текстового поля.

пример кода:

 TextBox1.Attributes.Add("value", "My Sample Password");
  

Комментарии:

1. Спасибо, это сработало

Ответ №3:

Это сделано специально по соображениям безопасности. Чем вы пытаетесь заполнить текстовое поле? Вы же не храните пароли пользователей в виде обычного текста, не так ли?

Комментарии:

1. Это не настоящий веб-сайт, это школьный проект, где они не заботятся о многих вещах безопасности (например, пароли, сохраняемые в виде обычного текста).

2. Я думаю, что нет никакого вреда в следовании лучшим практикам даже для базовых проектов.

Ответ №4:

Если вы говорите о форме входа пользователя, и у вас есть доступ к незашифрованному паролю, вы делаете это НЕПРАВИЛЬНО.

Пароли пользователей должны храниться в вашей базе данных в виде криптографического хэша, который нельзя преобразовать в текстовый пароль, только проверяется на соответствие.

Если то, что вы хотите сделать, это предварительно загрузить пароль пользователя в поле ввода, чтобы сэкономить ему время на ввод, просто не делайте этого, потому что веб-браузер пользователя, вероятно, справится с этим лучше.

Комментарии:

1. Посмотрите на комментарий, который я написал к ответу bkaid.

Ответ №5:

Вы пробовали что-то подобное:

 void Page_Load(object sender, eventargs e)
{
   password.value= "something";
}