Forum

MVC Authorization (...
 
Bildirimler
Hepsini Temizle

[Çözüldü] MVC Authorization (Rolleme) İşlemleri Hakkında

3 Yazılar
2 Üyeler
2 Likes
2,385 Görüntüleme
(@ibrahimayhan)
Gönderiler: 493
Prominent Member
Konu başlatıcı
 

Merhabalar ÇözümPark ve Ekibi,
Üzerinde Çalıştığım Bir MVC Projesinde Controller Tabanlı Rol İşlemi Uygulamaktayım,
Yalnız MVC Roller Üzerinde Kişiye Özel Belirttiğim Yetki Kodu ( Rol ) İle İlgili Controller ve View Görüntüleyerek İşlem Yapmaktadır,

Global.asax.cs
GlobalFilters.Filters.Add(new AuthorizeAttribute());
Giris Controller
var YetkiBilgisi = DB.YetkiIslemleri.Where(X => X.KayitNo == GirisIslemi.YetkiIslemleriKayitNo).FirstOrDefault();
 FormsAuthentication.SetAuthCookie(GirisIslemi.KayitNo.ToString(), false);
public override string[] GetRolesForUser(string KayitNo)
{
BTMEntities DB = new BTMEntities();
int KN = Convert.ToInt32(KayitNo);
var YetkiBilgisi = DB.YetkiIslemleri.Where(X => X.KullaniciIslemleriKayitNo == KN).SingleOrDefault();
return new string[] { YetkiBilgisi.IslemTanimi.ToString() };
}

 

Screenshot 24

Roller Yapısında Bir Kişinin Sadece Bir Adet IslemTanımı Yetkisi Bulunmaktadır,

Burada Oluşturmak İstediğim Yapı Yeni Bir IslemTanımı İle ( Örnek Olarak 4 ) İlgili Kişilerde Varsa, Belirlediğim Controller Üzerinden İşlem Yapabilsin ve View Görüntülemesidir,

Controller Authorize
[Authorize(Roles = "0,2")]
View Role Kontrolü
if (User.IsInRole("0"))

Yukarıdaki Yapı Üzerinde Bir Kişinin Sadece Bir IslemTanimi Olduğu İçin Controller Authorize Üzerinde Nasıl Bir İşlem Yapmam Gerekiyor ?

Bu Konuda Nasıl Bir İşlem Yapmam Gerekmektedir ?
Sizlerden Bilgi Beklemekteyim, İyi Çalışmalar...

 
Gönderildi : 19/07/2021 10:38
Konu Etiketleri

(@eravse)
Gönderiler: 1753
Üye
 
Gönderen: @ibrahimayhan

Merhabalar ÇözümPark ve Ekibi,
Üzerinde Çalıştığım Bir MVC Projesinde Controller Tabanlı Rol İşlemi Uygulamaktayım,
Yalnız MVC Roller Üzerinde Kişiye Özel Belirttiğim Yetki Kodu ( Rol ) İle İlgili Controller ve View Görüntüleyerek İşlem Yapmaktadır,

Global.asax.cs
GlobalFilters.Filters.Add(new AuthorizeAttribute());
Giris Controller
var YetkiBilgisi = DB.YetkiIslemleri.Where(X => X.KayitNo == GirisIslemi.YetkiIslemleriKayitNo).FirstOrDefault();
 FormsAuthentication.SetAuthCookie(GirisIslemi.KayitNo.ToString(), false);
public override string[] GetRolesForUser(string KayitNo)
{
BTMEntities DB = new BTMEntities();
int KN = Convert.ToInt32(KayitNo);
var YetkiBilgisi = DB.YetkiIslemleri.Where(X => X.KullaniciIslemleriKayitNo == KN).SingleOrDefault();
return new string[] { YetkiBilgisi.IslemTanimi.ToString() };
}

 

Screenshot 24

Roller Yapısında Bir Kişinin Sadece Bir Adet IslemTanımı Yetkisi Bulunmaktadır,

Burada Oluşturmak İstediğim Yapı Yeni Bir IslemTanımı İle ( Örnek Olarak 4 ) İlgili Kişilerde Varsa, Belirlediğim Controller Üzerinden İşlem Yapabilsin ve View Görüntülemesidir,

Controller Authorize
[Authorize(Roles = "0,2")]
View Role Kontrolü
if (User.IsInRole("0"))

Yukarıdaki Yapı Üzerinde Bir Kişinin Sadece Bir IslemTanimi Olduğu İçin Controller Authorize Üzerinde Nasıl Bir İşlem Yapmam Gerekiyor ?

Bu Konuda Nasıl Bir İşlem Yapmam Gerekmektedir ?
Sizlerden Bilgi Beklemekteyim, İyi Çalışmalar...

Merhaba, 

 

bu konuda koda claims eklememişsiniz zannedersem teorik olarak doğru ama login olduğunda o claimsi oluşturmanız lazım

örnek 

 

  List<System.Security.Claims.Claim> claims = new List<System.Security.Claims.Claim>
                                {
                                    new System.Security.Claims.Claim(System.Security.Claims.ClaimTypes.Name, user.Result.Adi),
                                    new System.Security.Claims.Claim(System.Security.Claims.ClaimTypes.Email, user.Result.Email),
                                    new System.Security.Claims.Claim(System.Security.Claims.ClaimTypes.Role,"Stadart"),
                                    new System.Security.Claims.Claim(System.Security.Claims.ClaimTypes.UserData,""),
                                };

                        
                            ClaimsIdentity identity = new ClaimsIdentity(claims, "cookie");
                         
                            System.Security.Claims.ClaimsPrincipal principal = new System.Security.Claims.ClaimsPrincipal(identity);
                        
                        await HttpContext.SignInAsync(
                       scheme: CookieAuthenticationDefaults.AuthenticationScheme,
                       principal: principal);

ProfectSoft Yazılım ve Danışmanlık Hizmetleri
LogPusher & Bifyou E-Commerce System
www.profectsoft.com

 
Gönderildi : 02/10/2021 20:54

(@ibrahimayhan)
Gönderiler: 493
Prominent Member
Konu başlatıcı
 

Merhabalar,

Geri Dönüşünüz ve Desteğiniz İçin Teşekkür Ediyorum @eravse

Aşağıdaki Şekilde İstediğim Durumu Çözümledim, Ama Claims Olarak Yapılandırmayı Core Üzerine Geçtiğimde Uygulayacağım Proje Üzerine

[Authorize(Roles = "0,1,10.11.12,")]
        public override string[] GetRolesForUser(string KayitNo)
        {
            BTMEntities DB = new BTMEntities();

            int KN = Convert.ToInt32(KayitNo);

            var YetkiBilgisi = DB.YetkiIslemleri.Where(X => X.KullaniciIslemleriKayitNo == KN).ToList();

            List<string> RolTanimlariListesi = new List<string>();

            string[] RolBilgisi = null;

            for (int i = 0; i < YetkiBilgisi.Count; i++)
            {
                RolTanimlariListesi.Add(YetkiBilgisi[i].IslemTanimi);
                
            }

            RolBilgisi = RolTanimlariListesi.ToArray();

            return RolBilgisi;
        }
 
Gönderildi : 05/07/2022 16:55

Paylaş: