2009-10-25 10 views
6

Czasami Microsoft robi coś tak oszałamiająco głupiego, że sprawia mi ból w głowie. Pomóż mi dowiedzieć się, że tak naprawdę nie jest tak ... proszę!IE nie oferuje zapisywania hasła w formularzu ASP.NET

Mam problem ze stroną logowania do strony ASP.NET (3.5) Rozwijam się, dzięki czemu IE (7 lub 8 ... nie może znieść otwarcia 6) nie oferuje oszczędzania hasło, gdy użytkownik się loguje. Sprawdziłem inne przeglądarki i Firefox, Chrome i Safari wszystkie oferują, aby zapisać hasło w porządku. Potwierdziłem również, że zapisywanie hasła IE w moich polach testowych działa poprawnie na innych stronach i na przykład Google etc to działa dobrze.

Przeszukanie, które zrobiłem, okazało się bardzo małe, ale to, co się pojawiło, sugeruje, że IE nie zaproponuje zapisania hasła, jeśli formularz na stronie zawiera więcej niż dwie kontrolki tekstu. Tak jest w przypadku mojego formularza, który ma również kontrolę, aby umożliwić użytkownikowi rejestrację. A kiedy usunę te dodatkowe kontrolki, IE magicznie prosi o zapisanie hasła, więc wydaje się, że to prawda.

Teraz ... jeśli ASP.NET pozwoliłby mi mieć wiele formularzy, wszystko byłoby dobrze, a ja byłbym w stanie oddzielić te dwie funkcje do postaci samodzielnych, a IE poprosiłaby o zapisanie haseł. Ale program ASP.NET nie pozwala mi tego zrobić, ponieważ zezwala tylko na jeden formularz. Mógłbym sfałszować formularz non runat = server i spróbować to zrobić, ale zgadnij co? Ponieważ moja strona korzysta z MasterPage, każdy dodawany tag formularza jest automatycznie usuwany, nawet jeśli jest to formularz non runat = server.

Tak więc nie widzę żadnego sposobu obejścia tego bez zasadniczej zmiany tego, co próbowałem osiągnąć. Wygląda na to, że muszę wytłumaczyć moim użytkownikom, że nie zostaną poproszeni o zapisanie ich haseł, jeśli używają IE (produktu Microsoft), ponieważ stworzyłem moją witrynę za pomocą ASP.NET (err ... a Microsoft).

Jeśli tak jest, po prostu nie mogę się nadziwić, jak to brzmi niedorzecznie. Jeśli ktokolwiek może zaoferować jakieś pomysły, jak sobie z tym poradzić, może mi powiedzieć, że wszystko jest w porządku i jestem wielkim, głupim idiotą, lub po prostu chcę potwierdzić, że to nie tylko ja uważam, że to jest głupie, proszę, zrób to.

Po prostu dla nagrania, naprawdę nie chcę (i nie rozumiem, dlaczego powinienem) zagrozić mojemu projektowi i podzielić moje strony na dwie części (co spowoduje gorsze doświadczenia dla użytkownika).

+0

Ciekawa decyzja dotycząca projektu ze strony MS. Nie mam pojęcia, jaka jest motywacja. Jeśli chodzi o Twój projekt ... Dlaczego nie po prostu zaproponować, aby użytkownik był zalogowany, jeśli jesteś przekonany, że zapisywanie hasła jest przełamaniem dla użytkowników? Czy ty też to robisz? – Bryan

+0

Tak, myślę, że to będzie moja jedyna opcja, miałem nadzieję na potwierdzenie tego zachowania, ponieważ jest bardzo mało, co udało mi się znaleźć. I, jak mówisz, jest to ciekawa sprawa. Nie chodzi o to, że zapisywanie haseł jest łamaczem kontraktów, trudnym do wytłumaczenia dla każdego, kto mógłby zapytać, dlaczego nie jest to możliwe i dlaczego platforma Microsoft + przeglądarka Microsoft = niepowodzenie, w tym konkretnym przypadku. – BinarySolo

+0

Czy próbowałeś używać surowych pól tekstowych HTML z formularzem, który przesyła z powrotem do strony aspx? – Chris

Odpowiedz

2

@Chris To właśnie poszłam na końcu.

Tak więc dla dobra kogokolwiek, nadal mam kontrolę aktywacji w formularzu runat = server i przetwarzam je w kodzie dla tej strony. Następnie mam drugi, standardowy formularz HTML z polami tekstowymi wejściowymi HTML, które są wysyłane na inną stronę .NET. Dotyczy to logowania użytkowników. Podnoszę wartości na tej stronie poprzez Request.Form i zajmuję się logowaniem z tego miejsca.

Plusy:

to wszystko działa i użytkownikom uzyskać ich loginy zapamiętany jako oni spodziewać.

Wady:

straciłem zdolność do korzystania z MasterPage (jak muszę dwa formularze na stronie), więc skutecznie musieli powielać szablonu - Nie podoba mi się to dużo.

Jeśli login użytkownika jest nieprawidłowy lub powoduje błąd, muszę przekierować go na stronę początkową i przekazać mu flagę, aby wyświetlić odpowiedni komunikat o błędzie - nie podoba mi się to zbytnio.

Tak jak mówię, to po prostu działa, aw tym przypadku to było najważniejsze. Dzięki za wkład.

+0

Dlaczego po prostu nie dodać niektórych javascript do strony, która działa po kliknięciu przycisku logowania, który usuwa inne pola tekstowe ze strony? – Michael

+0

Możesz użyć strony wzorcowej i mieć treść poza tagiem formularza ASPX. Praca w niektórych układach może być trudna, ale jeśli możesz użyć pozycji bezwzględnej lub względnej, to może nie jest tak źle. Wystarczy umieścić właściciela miejsca na stronie wzorcowej, który znajduje się poza tagiem formularza, powyżej lub poniżej, a następnie umieść na nim kontrolę treści na stronie treści. Dobrym tego przykładem, który prawdopodobnie już wykorzystałeś, jest umieszczenie go w sekcji head w celu dodania skryptu/stylu na stronie treści. – eselk