Quantcast
Channel: General Failure - Code Igniter
Viewing all articles
Browse latest Browse all 8

Code Igniter - käyttäjätunnistus

$
0
0

Opiskelu- ja asennusvaiheessa totesin jo sen, että active records-menetelmällä itse sovelluksen toimintojen koodaaminen on kohtuullisen kivutonta, joten aloitetaan jostakin vähän vaikeammasta. Blogi-esimerkkivideosta puuttui sovellukselle olennaiset asiat eli:

  • auth & auth - käyttäjän tunnistaminen ja käyttöoikeuksien määrittäminen
  • session - istunto

Istunnonhallintaan on kolme varteenotettavaa vaihtoehtoa, joko

  1. Käytän Code Igniterin omaa istunnonhallintaa
  2. Käytän oman sovelluskehykseni istunnonhallintaa
  3. Käytän php:n omaa istunnonhallintaa

Oman sovelluskehykseni etuja olisivat mahdollisuus tallettaa rajattomasti (niin paljon kuin on kantatilaa) tietoja istuntoon, sekä mahdollisuus estää sovelluksen käyttö "väärässä järjestyksessä", esimerkiksi hakemalla kirjanmerkistä suoraan sivua, joka tallettaa lomakkeen tiedot kantaan... Oman kehykseni käyttäminen myös rikkoo Code Igniterin urlit, sillä istuntotietoa kuljetetaan urlissa. Se ei siis oikeasti ole käyttökelpoinen valinta.

PHPn oma istunnonhallinta tarjoaisi myös mahdollisuuden tallettaa rajattomasti tavaraa istuntoon, mutta ei tietoturvatasoltaan ole välttämättä paras mahdollinen. Joten käytän harjoituksen vuoksi Code Igniterin omaa, jonka pistän autoloadin sisälle. Haluan myös käyttää nk. turvallisempaa hallintaa, joten teen kantaan istuntotaulun. Toinen taulu mitä tarvitsen on autentikointitaulu, joka sisältää käyttäjän tunnistamiseen tarvittavat tiedot. Jos oletetaan, että autentikointi on vaihdettavissa, niin periaatteessa taulussa pitäisi olla viisi kenttää: id, käyttäjätunnus, tyyppi, varmenne ja taso. Id on taulun avain, käyttäjätunnus on joko vierasavain todelliseen käyttäjätunnistukseen tai käyttäjätunnus jos tunnistus tapahtuu itse sovelluksessa, tyyppi kertoo miten varmennus suoritetaan, varmenne on se mitä meidän pitää saada, jotta uskomme käyttäjän olevan tunnistettu ja taso kertoo mikä on käyttöoikeustaso.

Istuntotaulua varten täytyy muuttaa tiedostossa system/application/config.php session-database päälle, samoin on syytä asettaa salausavain.

Yllätteän scaffolding toimii kuin unelma user_keys-taululle! Lisätään sinne yksi käyttäjä ja aloitetaan käyttäjätunnistuksen koodaaminen. Sitä varten tarvitaan sekä controlleri että näkymä. Aloitetaan näkymästä. Ja lopulta päädytään konstruktioon, joka sisältää neljä tiedostoa: controller/main.php, controller/login.php, views/login_view.php.

Istunnonhallinta toimii nyt niin, että jokaisen kontrollerin konstruktorissa voin testata onko istunto olemassa siten, että mikäli istunnon datasta ei löydy user_leveliä ja tai se on riittämätön siirrytään login-sivulle.

Istunnonhallinnasta puuttuu vielä logout, joka on yksi kutsu:

$this->session->sess_destroy();

Viewing all articles
Browse latest Browse all 8

Trending Articles