Logowanie przez owin – jak zaoszczędzić trzy tygodnie

niewiem

Walka!

Tak wyglądały moje ostatnie 3 tygodnie pracy nad projektem isthereanynews.pl (jest już online). A z czym walczyłem? Z klasycznym, acz partyzanckim – u mnie działa.

Social

Modne i praktyczne, w zasadzie to drugie, jest logowanie się do różnego rodzaju serwisów przez użycie konta z G+, FB czy Twittera. Ja też tak chciałem – w ten sposób mogłem uciec od problemu trzymania hasła gdzieś u siebie i wszystkich problemów z tym związanych.

#1

U siebie w projekcie korzystałem z samodzielnie (brawo ja) napisanego mechanizmu do logowania z w/w serwisami, kontrolery i serwisy. Działało pięknie – tak długo, jak nie decydowałem się tego opublikować i udostępnić. Wtedy zaczęły się pierwsze problemy  metoda GetExternalLoginInfoAsync nie zwracała informacji o koncie. Ciekawe że nie działało to tylko z kontami innymi niż moje. Już tu spędziłem kilka dni, wyglądało że nie ustawiam gdzieś ciastka lub coś. Ostatecznie dodałem nowy projekt z logowaniem, wyciąłem to czego nie potrzebowałem i korzystam z tego co przyszło z pudełka. Nie wiem gdzie jest różnica, czy czegoś mi brakuje – nie umiem tego znaleźć, ale nie chce spędzić dużej ilości czasu szukając jakiejś pierdoły.

Tip#1

Gdy korzystacie z ASP MVC i ichniego mechanizmu do OWIN i autoryzacji korzystajcie z dostępnych DefaultAuthenticationTypes. Weź działający mechanizm, wytnij to czego nie potrzebujesz i używaj. Inaczej coś może nie zadziałać lub gdzieś czegoś zapomnisz dodać – nie umiem tego wytłumaczyć, ale sprawdzone na własnej skórze

#2

Teraz ta grubsza sprawa, która zajęła mi gro czasu. Tip#1 wprowadzony w życie, dostajecie wszystkie informacje o użytkowniku na których wam zależy (o tym inny wpis), chcecie go zalogować czy to korzystając z ExternalSignInAsync czy domyślnego SignIn – i to jest jeszcze dobre i działa. Ale gdy będziesz chciał skorzystać z sesji, nie ważne dlaczego, to stracisz dużo czasu, bardzo dużo swojego czasu próbując udowodnić ludziom, że przecież działa – a tak naprawdę to nie działa. Tutaj największa zagadka, logowanie jako takie udaje się, nigdzie nie widać oznak problemów, błędów, logów, czy wyjątków, a jednak po przekierowaniu użytkownik nie jest zalogowany.

Tip#2

Gdy korzystasz z ExternalSignInAsync lub SignIn (OWIN) to nie ustawiaj niczego w sesji w tym czasie.

#3

Ciekawa sprawa z tym działaniem. Jak już pisałem u mnie żaden z problemów się pokazywał. Sprawdziłem, gdy ludzie zgłaszali problemy,  FF, Chrome, a nawet IE. Dopiero incognito w IE zadziałało poprawnie i wszystko przestało działać.

Tip#3

Jeśli ktoś ci mówi, że nie działa, a u ciebie działa. Korzystaj z każdej dostępnej przeglądarki, także incognito – może któraś zacznie zachowywać się tak jak tego oczekujesz i nie będziesz musiał prosić innych aby sprawdzili czy już.

Podsumowując:

  1. Domyśle nazwy do ciastek od asp mvc
  2. Sesji mówimy nie
  3. Pamiętaj o trybach incognito, od-obraź się na IE

Skorzystanie z tych trzech porad może zaoszczędzić ci nawet do trzech tygodni szukania problemów w twoim kodzie. Na zdrowie.

Podziękowanie za wsparcie, klikanie i mówienie: “jeszcze nie
Skype:
Piotr WroneckiSlack:
@bkielbasa
@darkspell
@pador
Oraz dla @pwlklm za to że się domagał nowego wpisu na blogu.

3 thoughts on “Logowanie przez owin – jak zaoszczędzić trzy tygodnie

    1. Wiesz co może tak, z tym że nigdzie nie było błędu. Pewnie gdybym wiedział co zalogować to może znalazłbym problem wcześniej. Ale gdybym wiedział co zalogować, to znalazł bym to także szybciej.

  1. Pingback: dotnetomaniak.pl

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.