[ CallMeSaMaster @ 28.06.2012. 22:19 ] @
Pozdrav svima,

nakon jedne duze pauze, ponovo se vratih ne web development. Radim jedan manji portal na kojem imam registraciju korisnika kao i logiranje. Za logiranje koristim gotovu kontrolu "Login" iz frameworka 4.0 i vs .net 2010. Korisnicki podaci se provjeravaju u bazi(sql server 2008).

Interesuje me sljedece, posto kada provjerim korisnika koji se postoji registrovan u bazi, ja setujem samo ovo:

Code:
FormsAuthentication.RedirectFromLoginPage(txtUser.Text, true);


Po onome sto procitah, ovo dodje nesto "cookies"/sesija tj ne moram se svaki put ponovo logirati kada se vratim.

U web.config sam dalje konfigurisao koje stranice su dostupne bez authentikacije i one za koje treba authentikacija.

Code:
 <location path="MyOrders.aspx">
    <system.web>
      <authorization>
        <deny users="?"/>
      </authorization>
    </system.web>
  </location>


Naravno naveo sam i defaultnu stranicu tj login page u slucaju da korisnik nije logovan, tako da se uvijek tamo redirektuje.

Ineteresuje me sada vise stvari:

1) Da li trebam praviti sesiju i zasto, ako vec imam ovo gore?
2) Na koji nacin i da li uopce na svakoj stranici kojoj pristupam, iako je za istu naveden "rule" u web.config, trebam provjeravati da li je korisnik prijavljen tj logovan, otprilike ovako:

Code:
If User.Identity.IsAuthenticated Then
   ' Good For You...
else
   ' Not So Good...
End if


ili mozda ovako

Code:
If HttpContext.Current.Request.IsAuthenticated

''' put code for Authenticated user  
End If



3) Ako pod 1) ne moram kreirati sesiju sa korisnickim podacima prilikom logiranja, na koji nacin mogu pratiti sta je koji korisnik radio na stranici, npr sta je kliknuo, koju sp je pozvao i sl.

Nadam se da nije mnogo pitanja od jednom, ali mi je ovaj dio security-a jako bitan.

Hvala za svaku pomoc, a naravno i sve sugestije i vasa iskustva oko sigurnosti stranice.

Pozz
[ S A J A @ 29.06.2012. 23:08 ] @
Koliko se ja sećam, sesije su neophodne ali dobra strana je što to sve radi automatski. Naime kad se korisnik loguje onda počne da traje njegova sesija i on može da pristupi svim stranicma koje si odredio. Nema potrebe da kod svake stranice radiš onu proveru IsAuthenticated osim ako ti ne treba za druge stvari. Imaj u vidu da će sesija da se prekine posle određenog perioda neaktivnosti i da ako korisnik nije uključio ono "RememberMe" da će ga baciti na login stranu.

Što se tiče logovanja šta korisnik radi, mislim da asp.net ima neki svoj interni sistem, zove se Tracing ili tako nešto, ja probao i žešće je komplikovan, ima milion informacije koje ti najverovatnije ne trebaju. Zato je možda bolje da napraviš neki svoj interni sistem logovanja. Napravi neku funkciju koja upisuje šta se dešava u neku log tabelu u bazi i stavi je na razna mesta u kodu, tamo gde ti treba.
[ pl4stik @ 30.06.2012. 11:03 ] @
Cim korisnik otvori neku stranu na tvom sajtu on application objekat mu dodeli novi session objekati koji se reciklira nakon valjda bese 45 min po defaultu, a kad se korisnik loguje u taj session se skladisti i njegov loginid tako da membership provider moze da proverava jel korisnik logovan.
Dali je korisnik logovan mozes da proveravas u stranici ili web configu zavisi od potrebe ali rules koje definises u web.configu za neki folder vazice za sve strane u tom folderu.
Hint: Pogledaj kako radi web configuration manager, on pravi u svakom folderu koji odaberes po jedan novi web.config i u njemu ruls, sto je po meni odlicno resenje.

Nemoj uopste da se mlatis pravljenjem sopstvenog loging sistema jer imas odlicno resenje out of the box sa svim pripadajucim classama.

Vidi ovde za vise http://www.asp.net/web-forms/videos/authentication

Sto se tice kako da pratis ko sta radi, u principu mozes na svaki click da uzimas username koje je ako je korisnik logovan loginname ili ako nije onda je anonimus i onda npr. neki objectdatasource iskoristis da radis neku sp i u onupdate/ondelete/oninsert tog objectdatasoupcea dodas code za insert u bazu korisnik tajitaj koristio objectdatasourcetajitaj za insert\update\delete... ima raznih nacina...

[Ovu poruku je menjao pl4stik dana 30.06.2012. u 12:14 GMT+1]