По запросу, вот сайт, который показывает и OpenID, и обычный логин / пароль для входа в систему в одном представлении:
https://sourceforge.net/account/login.php
Когда вы создаете такую страницу, неиспользуемые переменные формы совершенно нормально остаются пустыми. Это не делает ваш код грязным. Он просто представляет то, что сделал пользователь: он ввел текст в некоторые поля, а остальные оставил пустым.
Вы все еще можете проверить, что представленные значения верны; Вы просто должны добавить немного больше логики в свой контроллер. В псевдокоде это может выглядеть примерно так:
if openid_identifier != "":
validate_openid( openid_identifier)
else:
validate_password( username, password)
Стоит также отметить, что для поставщиков OpenID, которые, как известно, поддерживают его, вы можете использовать функцию выбора идентификатора OpenID 2.0 и предоставить простую кнопку вместо того, чтобы просить пользователя ввести свой OpenID. Подробнее см. в спецификации .