/ / Asp.net web api Session - javascript, angularjs, html5, asp.net-web-api

Asp.net web api Session - javascript, angularjs, html5, asp.net-web-api

Nie dostaję interfejsu API sieci web i sesji.

Stworzyłem projekt interfejsu API asp.net i zintegrowałem w nim angularjs. Za każdym razem zadzwonię do interfejsu web API.

Przeczytałem artykuły, które stwierdzają, że nie jest dobrze korzystać z sesji w interfejsie WWW. Rozumiem, że interfejs API jest podejściem bezstanowym. Zgadzam się. ale istnieje sposób na użycie sesji.

Pierwsze pytanie: Jeśli po zalogowaniu chcę wyświetlać nazwę użytkownika na każdej stronie, co powinienem zrobić z interfejsem API?

drugie pytanie: mówią, że nie używaj sesji w webapi. jaki jest inny sposób / podejście do bezpiecznego przechowywania informacji o kliencie.

Jeśli używam lokalnej pamięci HTML5, można ją edytować. Jeśli używany jest plik cookie, można go usunąć.

Co i jak mam to zrobić dla użytkownika, dopóki aplikacja nie będzie w trybie działania?

Odpowiedzi:

2 dla odpowiedzi № 1

Tutaj semantyka często przesłania dyskusję. Ludzie mylą obiekt sesji z bezpaństwowością. I często mówią: „nie używaj sesji, ponieważ nie jest ona„ bezstanowa! ”.

Jednak naprawdę oznaczają, że powinieneś starać się, aby twoje spokojne wezwania były idempotentne, co oznacza, że ​​nie zmieniają swojego zachowania w zależności od tego, co robisz w tle.

Sesja, pamięć podręczna środowiska wykonawczego lub cokolwiek to jestużywasz do buforowania danych, nie ma to wpływu na twój projekt bezstanowy, bo tak naprawdę, co dalej? Twoja baza danych też jest pełna? I nie powinieneś czytać danych z tego? Bzdury oczywiście; twoja podstawowa pamięć, jeśli jest w pamięci lub na dysku, nie ma wpływu na stan twojego klienta.

Chociaż uważam, że @MajoB przedstawia inne ważne punktyo nieużywaniu obiektu sesji, naprawdę nie ma nic złego w użyciu pamięci podręcznej w interfejsie WWW, sesji lub czymś innym. Ale nigdy nie pozwól, aby fakt, że coś jest w sesji IN, zwraca inny wynik niż wtedy, gdy coś jest poza sesją.


1 dla odpowiedzi nr 2

Polecam unikanie asp.session, ponieważ może to powodować problemy z wydajnością i może wygasnąć w dowolnym momencie, niezależnie od stanu aplikacji, nie skaluje się w chmurze, zablokuje współbieżne żądania ajax). Lepszym rozwiązaniem byłoby użycie mechanizmu przechowywania HTML 5, zwłaszcza w połączeniu z AngularJs (możesz użyć ng-storage https://github.com/gsklee/ngStorage).


0 dla odpowiedzi № 3

Polecam używanie tożsamości asp.net i renderowanie informacji o użytkowniku na serwerze.