Преглед садржаја
У веб апликацијама у којима имамо приватне зоне којима би требали приступити само регистрирани чланови, морамо имплементирати механизме који корисницима омогућују да виде само након што су аутентифицирани.Тхе филтери Они су алати за Раилс који нам омогућавају да пресрећемо позиве методама и радњама, омогућавајући нам да додамо своје методе било пре, током или после, тако да можемо да контролишемо ток апликације по нашем нахођењу како бисмо испунили своје функционалности. У овој фази ћемо користити пре филтера да бисмо пресрели позиве до наших радњи, на овај начин можемо да верификујемо сесију и знамо да ли је корисник пријављен, ако не, онда их преусмеравамо тамо где смо договорили. Ову методу ћемо поставити у наш контролер апликације јер је она основа и на тај начин ће бити доступна за целу апликацију.
Погледајмо код који имамо за њега:
деф ауторизирај осим ако сесија [: усер_ид] фласх [: нотице] = "Молимо пријавите се" редирецт_то (: цонтроллер => "логин" ,: ацтион => "логин") енд енд
Како видимо да је логика иза овога прилично једноставна, користимо Рубиин услов који је осим ако, ово нам омогућава да условимо да се, осим ако услов није испуњен, изврши шифра блока. Дакле, ако немамо ИД корисника у сесији, преусмерићемо га и замолити га да се аутентификује у апликацији.
Сада ћемо у нашем администраторском контролеру филтрирати и тражити од корисника да се аутентификују:
класа АдминЦонтроллер <АпплицатионЦонтроллер бефоре_филтер: ауторизирајте
И у нашем контролеру за пријаву такође радимо нешто слично, само што ћемо додати изузетак акције пријављивања која нас занима, а коју може видети сваки неовлашћени корисник:
класе ЛогинЦонтроллер: логин
Ако нисмо пријављени, требало би да видимо овако нешто приликом приступа административној страници апликације:
Сада имамо начин да применимо и филтрирамо да корисници не могу да виде административне панеле ако нису пријављени, међутим имамо последњу недоследност, у делу елиминисања корисника морамо избећи брисање генералног администратора апликације, јер ако то учинимо ако то не учините, постоји могућност да корисник избрише све кориснике, а ми останемо без приступа осим ако директно не измијенимо базу података, а то је нешто неприхватљиво за нашу апликацију. За ово ћемо поново направити посебан догађај, у овом случају то ће бити бефоре_дестрои, шта то ради пре него што извршите акцију уништити покрени метод.
Да видимо код:
бефоре_дестрои: донт_дестрои_даве деф донт_дестрои_даве подићи "Не могу уништити даве" ако селф.наме == 'даве' заврши
Затим ћемо у нашој радњи брисања ухватити поруку и приказати је, да видимо код акције:
деф делете_усер ид = парамс [: ид] иф ид && усер = Усер.финд (ид) старт усер.дестрои фласх [: нотице] = "Корисник # {усер.наме} обрисан" спасилачки фласх [: нотице] = "Цан ' т избрисати тог корисника "енд енд редирецт_то (: ацтион =>: лист_усерс) енд
Овим завршавамо наш водич о ограничавању приступа нашој апликацији, важно је покрити све могућности како бисмо спријечили неовлаштене кориснике да виде или измијене наш административни дио, како бисмо избјегли будуће главобоље и сигурносне проблеме који ће нашу апликацију учинити несигурном и нестабилном.Да ли вам се допао и помогао овај водич?Можете наградити аутора притиском на ово дугме да бисте му дали позитиван поен