Şimcik.. Bu yetki kontrolü yapmak istediğimiz Controller başına ya da Action başına yazdığımız zımbırtısı Controller/Action çalıştırılmadan bi çalışıyor. Temel olarak, doğrulama başarılı olursa Controller/Action çalışıyor, false gelirse çalışmıyor. Bu kontrolü rol adları, yetki adları vs gibi şeylere gre yapabiliyoruz. Genelde rneklerde olarak geçiyor. Authorize yerine kendi isimlendirdiğimiz halini kullanalım. Mesela, Niye Rol, Yetki vs gibi isim kullanmadığımızı da o kısımda greceğiz. Kendi kullandığımız şekliyle rnek koyayım. Senaryomuz düz mantıkla şyle, - kullanıcı login oluyo, şifre hede hd doğruluk kontrolü yapılıyor sonucunda kullanıcının rollerini, ardından bu rollere bağlı yetkileri çekip session a gmüyoruz. - Yekilendirme için kullancağımız bi sınıf ekliyoruz. . Bunu "AuthorizeAttribute" ten türetip resimlerdeki gibi "AuthorizeCore" u override ediyoruz. - Yetki kontrolü yapmak istedimiz Controller/Action dan nce kontrolümüzü yapıyoruz. (rnekte ki hali => Resimlerle rnekleyelim;Resim : DB tarafıDB tarafı : Rol tablomuz, Ekranlar için tablomuz ve bu iki tablonun eşleştirildiği bir tablomuz var. Kullanıcının sahip olduğu rollerin yetkisi olan ekranları bu şekilde belirleyebiliyoruz. Byle ara tablo vs yerine direk admin, kullanıcı vs gibi rol adları üzerinden de yetki kontrolü yapabiliriz aslında ama onun yerine EkranEylem tablosundaki "KimlikBilgisi" alanına bir guid basıp, bir rol için bir Action'a yetki ekleneceği zaman kodu açıp o Action'ın başına rol adı vs ekleme yapıp dekrar deploy atmaktansa, koda girmeden veritabanı üzerinden "X Rol_ID li kişiye Y EkranEylemID li 54xx54-xs6x6s7-x7sx yetkisini ver" işlemini yapabiliriz Velhasıl gelelim kod tarafına. nce bi login olalım. Resim Login - SessionLogin - Session : Login in post işleminde grüldüğü gibi Kullanıcının rolünü ve yetkiListesi olarakta o role ait yetkileri sessiona alıyoruz. Resim : RoleBagliYetkilerRoleBagliYetkiler : Rol_ID ile gidip Role bağlı yetkilerin, EkranEylem tarafındaki "KimlikBilgisi" bilgisini alıyoruz. Doğrulamayı bu alan üstünden yapıyoruz çünkü. Resim : Custom sınıfımızCustom sınıfımız : Yetki kontrolümüzü yapacağımız kendimize ait sınıfı resimdeki gibi ekliyoruz. Tabi bunu "AuthorizeAttribute" ten türetiyoruz. İçerisinde kontrol edeceğimiz değeri barındırsın diye bi yavrucak tanımlıyoruz. Burada AuthorizeCore ve HandleUnauthorizedRequest metotları var. Bunları override edicez sadece. AuthorizeCore yetki kontrolünü yaparken yapılacak şeyleri içerecek, "HandleUnauthorizedRequest" ise adı üstünde yetkisi olmayan yerlere gelen istekleri handle etmek için kullanacağımız yer. Artık kişiselleştirmek vs bize kalmış, sağına soluna bir şeyler ekleyerek vs J Biraz hızlı oldu rnek, anca vakit bulabilip yazabildim kusura bakmayınuz. Eve geç gelip bir de film izleme szüm olunca hızlı hızlı anca bu akdar hazırlayabildim bir şeyler. Eksik ya da atladığım, adam gibi açıklayamadığım yer olursa sorar işi düşüpte bunu okuyan mürit :)Şunu niye byle yapıyon la mal şyle yapsana daha mantıklı diyen varsa oda uyarırsa sevinirim :) Ek bilgi ek bilgidir :) attribute sınıfı nasıl yazılır ona bi bakmam gerek onun dışında anladım hocam daha nce attribute sınıfı yazmamıştım. onun dışında mantığı anladım saol hocam :)

@unbalanced hocam dediğin şekilde authorized in de customization olayına baktım anladım olayı. Bu linkten okudum http://stackoverflow.com/questions/23055403/asp-net-mvc-user-authorize-in-controller burda adam verdiği rnekte her defasında database e gidiyo bu biraz sacma değilmi bi controllerın tepesine yada action method un tepesine custom bir authorized yazıcam sonra her gelen istekte, ilgili authorized metodu calıscak metodun içindede veritabanına gitmiş bu linkteki rnekte. Onun yerine bi cookie yada sessiondan okusa daha mantıklı olmaz mı? Birde custom role olayında getRolesForUsers metodunun çalışma seklini çzdüm ancak diğer metodlara bakamadım pek MembershipProvider ve RoleProvider sınıflarında yer alan diğer metotlar hangi durumlarda tetikleniyor? Ayrıca debug atarak denedim 4-5 defa public override string GetRolesForUser bu fonksıyon 2 defa arka arkaya çalışıyor. Eğer dndürdüğü string dizisinde method için gerekli rol varsa 1 kere çalışıyor. Ancak dndürdüğü rol dizisinde işe yarar rol yoksa aynı method tekrar çagrılıyor.

yazayımda konuyu kaybetmeyeyim. gece 12 den sonra eve gelince ufak bir rnekvari bir şey yollayayım geç olmadıysa.. Gerçi geç olduysa da daha sonra bu konuyu arayan biri grür gene iş grülür :) .

Mvc 5 teki hazır üyelik sistemini kullanmıyorum. Proje başlarken hiç yaratılmasın dedim yani. Users diye bir sınıf yazdım kullanıcı adı ve şifre var kullanıcı istek yapınca controllerda bakıyorum eğer veritabanında varsa kullanıcı adı ve şifre FormsAuthentication. SetAuthCookie ; diyerek cookie yaratıyorum. Bazı methodların baş kısmınada yazdım üyelik gerektiren alanları bu şekilde yaptım. Ancak authorized in role zelliğini kullanmak için ne yapmam lazım?

Yarın yazayım hocam yaptığım tespitleri ve anladığım yerleri kodlarla birlikte. Hannibal_King tarafından 20/Tem/15 03:02 tarihinde düzenlenmiştir

Şimcik.. Bu yetki kontrolü yapmak istediğimiz Controller başına ya da Action başına yazdığımız zımbırtısı Controller/Action çalıştırılmadan bi çalışıyor. Temel olarak, doğrulama başarılı olursa Controller/Action çalışıyor, false gelirse çalışmıyor. Bu kontrolü rol adları, yetki adları vs gibi şeylere gre yapabiliyoruz. Genelde rneklerde olarak geçiyor. Authorize yerine kendi isimlendirdiğimiz halini kullanalım. Mesela, Niye Rol, Yetki vs gibi isim kullanmadığımızı da o kısımda greceğiz. Kendi kullandığımız şekliyle rnek koyayım. Senaryomuz düz mantıkla şyle, - kullanıcı login oluyo, şifre hede hd doğruluk kontrolü yapılıyor sonucunda kullanıcının rollerini, ardından bu rollere bağlı yetkileri çekip session a gmüyoruz. - Yekilendirme için kullancağımız bi sınıf ekliyoruz. . Bunu "AuthorizeAttribute" ten türetip resimlerdeki gibi "AuthorizeCore" u override ediyoruz. - Yetki kontrolü yapmak istedimiz Controller/Action dan nce kontrolümüzü yapıyoruz. (rnekte ki hali => Resimlerle rnekleyelim;Resim : DB tarafıDB tarafı : Rol tablomuz, Ekranlar için tablomuz ve bu iki tablonun eşleştirildiği bir tablomuz var. Kullanıcının sahip olduğu rollerin yetkisi olan ekranları bu şekilde belirleyebiliyoruz. Byle ara tablo vs yerine direk admin, kullanıcı vs gibi rol adları üzerinden de yetki kontrolü yapabiliriz aslında ama onun yerine EkranEylem tablosundaki "KimlikBilgisi" alanına bir guid basıp, bir rol için bir Action'a yetki ekleneceği zaman kodu açıp o Action'ın başına rol adı vs ekleme yapıp dekrar deploy atmaktansa, koda girmeden veritabanı üzerinden "X Rol_ID li kişiye Y EkranEylemID li 54xx54-xs6x6s7-x7sx yetkisini ver" işlemini yapabiliriz Velhasıl gelelim kod tarafına. nce bi login olalım. Resim Login - SessionLogin - Session : Login in post işleminde grüldüğü gibi Kullanıcının rolünü ve yetkiListesi olarakta o role ait yetkileri sessiona alıyoruz. Resim : RoleBagliYetkilerRoleBagliYetkiler : Rol_ID ile gidip Role bağlı yetkilerin, EkranEylem tarafındaki "KimlikBilgisi" bilgisini alıyoruz. Doğrulamayı bu alan üstünden yapıyoruz çünkü. Resim : Custom sınıfımızCustom sınıfımız : Yetki kontrolümüzü yapacağımız kendimize ait sınıfı resimdeki gibi ekliyoruz. Tabi bunu "AuthorizeAttribute" ten türetiyoruz. İçerisinde kontrol edeceğimiz değeri barındırsın diye bi yavrucak tanımlıyoruz. Burada AuthorizeCore ve HandleUnauthorizedRequest metotları var. Bunları override edicez sadece. AuthorizeCore yetki kontrolünü yaparken yapılacak şeyleri içerecek, "HandleUnauthorizedRequest" ise adı üstünde yetkisi olmayan yerlere gelen istekleri handle etmek için kullanacağımız yer. Artık kişiselleştirmek vs bize kalmış, sağına soluna bir şeyler ekleyerek vs J Biraz hızlı oldu rnek, anca vakit bulabilip yazabildim kusura bakmayınuz. Eve geç gelip bir de film izleme szüm olunca hızlı hızlı anca bu akdar hazırlayabildim bir şeyler. Eksik ya da atladığım, adam gibi açıklayamadığım yer olursa sorar işi düşüpte bunu okuyan mürit :)Şunu niye byle yapıyon la mal şyle yapsana daha mantıklı diyen varsa oda uyarırsa sevinirim :) Ek bilgi ek bilgidir :) .

Çok detaya boğulmak istemeyenler için webmatrix membership provider tavsiyemdir. oldukça basit bir kullanımı var. https://www.google.com.tr/webhp?sourceid=chrome-instant&ion=1&espv=2&es_th=1&ie=UTF-8#q=webmatrix+membership+provider Paslanmış bir uygulama geliştirici.. #AnalistŞart

yeni yeni anliyorum role provider sinifinda getrolesforusers diye bir fonksiyon var. biz bir controllerın tepesine yada actionmethod un uzerine falan yazarsak bu getrolesforusers direk cagrilio. bu kendi kendine cagriliomus. onu farkettim. bizim yapmamiz gerekende bu getrolesforusers fonksiyonunu override etmek. bunun icine istedigimizi yazmak arastirmaya devam ediorum konuyla ilgili her türlü bilgiye açım. en son tespitlerimi topluca yazicam mvc ye yeni baslayan arkadaslar icin

@MaviGozluDev hocam gayet güzel açıklamış. Bende bişeyler yazacaktım ama gerek kalmamış gayet net anlatmış.1-2 soru sorayım bende. 1-) Login metodunda argüman olan string returnUrl kısmındaki returnUrl nerden geldi onu biz nerde tanımladık. Sistem nasıl anladı returnurl i 2-)kullanıcı başarı ile login olduktan sonra kullanıcı hakkında ekstra verılerı session da tuttuk. Ancak session ın bir timeout süresi var ve bu süre 20 dakika olsa eğer kullanıcı 19. dakikada site ile etkileşime girse dahisession kesinlikle yok olur diye biliyorum. Yani kendi kendine yenilenmiyor diye biliyorum. Bunun yerine formsauthentication extension isimli paketi indirdim nugettan. Bunda setauthcookie derken daha fazla parametre giriyoruz. Saklamak istediğimiz verileride koleksiyon şeklinde setauthcookie ye argüman olarak veriyoruz. Bunu denedim gayet güzel calısıo. ama sessionları kontrol etmeliyiz bence eger nullsa tekrar veritabanından verılerı cekmek lazım.

yeni gordum sorunu hocam aynen oyle yapiyorsun, hatta username yazarak bile erisim verebilirsin. bu authorized in da customization u var, evde olsam ornek gonderirdim.. custom ile daha genis bir kontrol saglayabilirsin edit: bu almanca klavyeye de bi alisamadim, unbalanced tarafından 16/Tem/15 12:21 tarihinde düzenlenmiştir Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.

hocam mvc de yeniyim bende sorduğun olayı az çok anladım fakat kodları paylaşabilir misin sorun olmazsa veya rnek kod varsa elinde?