#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";
}