ASP.NET prihlasovanie   zodpovězená otázka

ASP.NET WebForms

Používam Visual Studio 2010 , WebSire pod .NET 4.0. Po vytvoreni obyčajneho prihlasovania ktore skontroluje či sedí username a password v XML dokumente som sa dočítal niečo o Session aby prihlásenie ostalo aktívne na dalších podstránkach. Tam som ale narazil na problém s TimeOut ktorý premaže v mojom prípade Session de su uložene username a password každých 15sekund. Vo webconfig som teda nastavil <sessionState timeout="60" /> ,ale dostal som sa aj k problému Validation of viewstate MAC failed. tak som nastavil v Page EnableViewStateMac="false" a po tom už nenastaval chyba s viewstate MAC ale Session sa premaže znova každých 15sekund a nereaguje na nastavenie TimeOut.

Pravdepodobne je to cele zle spravene a keby mi viete niekto pomocť ako opraviť tento postup alebo ma niako nakopnuť do ineho sposobu prihlasovania budem vdačny.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nepoužívejte session!Doporučuji si přečíst skvělou sérii článků od Altaira o cookies,Viewstate a session a jejich použití.Z nich pochopíte na co je jednotlivá technologie (ne)dobrá.Takto tvoříte něco,o čem nevíte ani "ň",což do budoucna zadělává jen na problémy.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

dakujem za rychlu odpoved hned sa nato pozriem.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

A proč nepoužijete vlastně interní mechanismus přihlašování?Ten pracuje na bázi cookies,což je asi nejrozumější řešení...mimochodem zde je odkaz na jeden z článků ;-) :

http://www.aspnet.cz/articles/190-stavov...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Myslim že ten je stavany na autentifikáciu ktora ma zapisane udaje vo webconfig a ja ich mam v XML dokumentoch ale vidím to tak že použijem interní mechanizmus.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Noo,to není pravda.Údaje zapsané v jakémkoliv souboru,který lze standardně přečíst je chyba.Interní mechanismus nevyužívá web.config pro uchování informací,na to se používá DB.

Ukládat takové informace v txt souborech je security incident jak vyšitý...samozřejmě,že pokud aplikaci "provozujete" pouze u sebe na PC(tedy lokálně) na testování,tak není třeba používat standardy,Nicméně,čím dříve si je zažijete,tim lépe pro Vás

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dokumenty mam uložene v App_Data kde podla toho čo som sa dočítal nemá prístup uživatel. A po prečitaní článkou Altair som sa dočítal na záver že jedine cookies su tak trochu použitelné pre menšie množstvo dát. Ako píšete aj interný mechanizmus prihlasovania používa cookies tak do tých cookies sa zapíše username a aj password ? napríklad šifrovane ? Lebo mne funguju stránky na princípe že pri Load sa overí username,password a až potom sa načíta stránka ale cookies sa dajú pozmeniť/čítať uživatelom tak mi to pripadá znova ako hlupi postup iked najlepší z možných postupov.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nene,většinou to funguje tak,že vy odešlete zašifrovaně data(username+password) na server,ten je ověří a v případě,že je vše ok,tak pošle autentizační token a uloží do ho cookies.Je to popsáno zjednodušeně...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Len nechcem vedieť čo bude ak ten token niekto ukradne a vytvori podla neho cookie a server ho prijme. Nieže by som mal niaku doležitu web stranku a ani netušim či je to ozaj možne ale napadlo mi to byť len o trochu zložitejšie ako nehať v cookies rovno prihlasovacie udaje. (prepačte ak som na omyle)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zas tak jednoduché to není,to by se jinak tato technologie nevyužívala(logicky).Nicméně Vám nikdo nebrání použít jiný způsob či si napsat vlastní mechanismus.Avšak vzhledem k aktuálním znalostem bych to silně nedoporučoval.

Přečtěte si popis

http://msdn.microsoft.com/en-us/library/...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Výhoda ASP.NET je v tom, že o to, jak se to přesně ukldáá do cookies, se nemusíte starat (ale pro zajímavost, je tam zašifrovaný a digitálně podepsaný autentizační tiket).

Na session kašlete, ta s autentizací nemá nic společného a doporučuji se jí vždy vyhnout.

Pro tento úkol by mělo stačit napsat si vlastního membership providera, který zajistí ověření jména a hesla. Přidáte do projektu třídu dědící z MembershipProvider a stačí přepsat metodu ValidateUser (pokud si budete XML soubor spravovat sám).

Ve web.configu pak jen řeknete, že pro ověřování jména a hesla uživatele se použije ta vaše třída a v aplikaci použijete standardní komponentu Login - ta už se postará o vše ostatní - v případě špatného hesla zobrazí hlášku, v případě správného hesla vygeneruje ticket a nastaví uživateli cookie.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback