İçindekiler
Yalnızca kayıtlı üyelerin erişmesi gereken özel bölgelere sahip olduğumuz web uygulamalarında, kullanıcıların yalnızca kimlikleri doğrulandıktan sonra görmelerine izin veren mekanizmalar uygulamalıyız.NS filtreler Onlar araçlar Raylar Bu, yöntemlere ve eylemlere yapılan çağrıları engellememize izin verir, yöntemlerimizi önce, sırasında veya sonrasında eklememize izin verir, böylece işlevselliklerimizi yerine getirmek için uygulamanın akışını uygun gördüğümüz şekilde kontrol edebiliriz. Bu aşamada kullanacağımız filtreden önce eylemlerimize yapılan çağrıları durdurmak için, bu şekilde oturumu doğrulayabilir ve kullanıcının oturum açıp açmadığını öğrenebiliriz, değilse, onları ayarladığımız yere yönlendiririz. Bu yöntemi, temel olduğu için uygulama denetleyicimize yerleştireceğiz ve bu şekilde tüm uygulama için kullanılabilir olacaktır.
Bunun için sahip olduğumuz kodu görelim:
def oturum [: user_id] flash [: not] = "Lütfen oturum açın" redirect_to (: controller => "login",: action => "login") end end
Bunun arkasındaki mantığın oldukça basit olduğunu gördüğümüz için, Ruby'nin kendi koşullu olanını kullanıyoruz. Meğer ki, bu, koşul sağlanmadıkça, bloğun kodunun yürütüleceğini koşullandırmamızı sağlar. Bu nedenle, oturumda bir kullanıcının kimliğine sahip olmadığımız sürece, onu yeniden yönlendireceğiz ve uygulamada kimliğini doğrulamasını isteyeceğiz.
Şimdi yönetici denetleyicimizde filtre uygulayacağız ve kullanıcılardan kimlik doğrulamasını isteyeceğiz:
class AdminController <ApplicationController before_filter: yetkilendir
Ve oturum açma denetleyicimizde de benzer bir şey yapıyoruz, yalnızca, kimliği doğrulanmamış herhangi bir kullanıcı tarafından görülebilen, ilgilendiğimiz oturum açma eyleminin istisnasını ekleyeceğiz:
class LoginController: giriş
Giriş yapmadıysak, uygulamanın yönetim sayfasına erişirken şöyle bir şey görmeliyiz:
Artık kullanıcıların oturum açmadıkları takdirde yönetim panellerini göremeyeceklerini uygulama ve filtreleme yöntemimiz var, ancak son bir tutarsızlığımız var, kullanıcıları çıkarma kısmında uygulamanın genel yöneticisini silmekten kaçınmalıyız çünkü yaparsak uygulamanın genel yöneticisini silmekten kaçınmalıyız. bunu yapmazsanız, bir kullanıcının tüm kullanıcıları silme olasılığı vardır ve veritabanını doğrudan değiştirmediğimiz sürece erişimsiz kalırız ve bu bizim uygulamamız için kabul edilemez bir şeydir. Bunun için yine özel bir etkinlik oluşturacağız, bu durumda önce_destroy, eylemi yapmadan önce bunu ne yapar? tahrip etmek bir yöntem çalıştırın.
Kodu görelim:
once_destroy: don_destroy_dave def don_destroy_dave yükseltme self.name == 'dave' end ise "dave'i yok edemez"
Ardından silme eylemimizde mesajı yakalayıp görüntüleyeceğiz, eylem kodunu görelim:
def delete_user id = params [: id] if id && user = User.find (id) start user.destroy flash [: notice] = "Kullanıcı # {user.name} silindi" kurtarma flaşı [: notice] = "Can ' o kullanıcıyı sil "end end redirect_to (: action =>: list_users) end
Bununla, uygulamamıza erişimi sınırlama konusundaki eğitimimizi tamamlıyoruz, yetkisiz kullanıcıların idari bölümümüzü görmesini veya değiştirmesini önlemek için tüm olasılıkları kapsamak önemlidir, bu, uygulamamızı güvensiz ve kararsız hale getirecek gelecekteki baş ağrıları ve güvenlik sorunlarından kaçınmak için önemlidir.Bu Eğitimi beğendiniz ve yardım ettiniz mi?Yazara olumlu puan vermek için bu düğmeye basarak yazarı ödüllendirebilirsiniz.