none
MVC authorize ile yetkilendirme RRS feed

  • Soru

  • Merhaba, mvc uygulamamın girişinde yetkilendirme yapıp, kullanıcının girip giremeyeceği yerleri ayarlamak istiyorum. 

    Kodum;

                    var kullanici = db.users.Where(ww => ww.buyer_code == model.buyer_code && ww.password == model.password);
                    if (kullanici.Count() > 0)
                    {
                        ///var yetki = kullanici.Select(a => a.yetki).Single();
                        FormsAuthentication.SetAuthCookie(model.buyer_code, false);
                        return RedirectToAction("index", "homepage");
                    }

    Yetki sütunumda ise sadece 1 ve 0 var. (1=admin / 0=user)

    Bu durumda ben bu kullanıcının yetkisini nasıl atayacağım?

    2. sorum ise, cookiede ki buyer_code bilgisini başka controllerde nasıl kullanabilirim?


    • Düzenleyen Kenshai 5 Kasım 2019 Salı 16:08
    5 Kasım 2019 Salı 14:34

Tüm Yanıtlar

  • Merhaba Her Controller'ı ayrı ayrı yetkilendirebilirsiniz. Bunu login olduğu anda yapabilirsiniz.

    Account Controller

     ui.SinglePerson = queryPerson; //  ui kullanıcının yetkilerini aldığımız bir methodtur
                        DateTime date = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 18, 0, 0);
                        string userData = "Dashboard,";
                        if (ui.Yetki(2).Yonetim == true | ui.Yetki(2).Okuma == true)
                            userData += "Satis,";
                        if (ui.Yetki(1).Yonetim == true | ui.Yetki(1).Okuma == true)
                            userData += "Person,";
                        if (ui.Yetki(28).Yonetim == true | ui.Yetki(28).Okuma == true)
                            userData += "Delares,";
                        if (ui.Yetki(14).Yonetim == true | ui.Yetki(14).Okuma == true)
                            userData += "Depo,";
                        if (ui.Yetki(3).Yonetim == true | ui.Yetki(3).Okuma == true)
                            userData += "Teklif,";
                        if (ui.Yetki(26).Yonetim == true | ui.Yetki(26).Okuma == true)
                            userData += "Gorevler,";
                        if (ui.Yetki(6).Yonetim == true | ui.Yetki(6).Okuma == true)
                            userData += "Muhasebe,";
                        if (ui.Yetki(30).Yonetim == true | ui.Yetki(30).Okuma == true)
                            userData += "Zimmetler,";
                        if (ui.Yetki(9).Yonetim == true | ui.Yetki(9).Okuma == true)
                            userData += "Talep,";
                        if (ui.Yetki(4).Yonetim == true | ui.Yetki(4).Okuma == true)
                            userData += "Proje";
    
                        string AdminValue = "{\"email\":\"" + queryPerson.Email
                            + "\",\"UserID\":\"" + queryPerson.PersonID
                            + "\",\"AdminRoles\":\"" + AdminRoles
                            + "\",\"Admin\":\"" + "true"
                            + "\",\"WorkRoles\":\"" + "false"
                            + "\",\"Name\":\"" + queryPerson.Adi
                            + "\"}";
                        var ticket = new FormsAuthenticationTicket(
                        1,
                        AdminValue,
                        DateTime.Now,
                        DateTime.Now.AddHours(1),
                        true,
                      userData,
                        FormsAuthentication.FormsCookiePath);
                        string hash = FormsAuthentication.Encrypt(ticket);
                        HttpCookie cokie = new HttpCookie(FormsAuthentication.FormsCookieName, hash);
                        cokie.Expires = ticket.Expiration;
                        Response.Cookies.Add(cokie);
    

    Global.asax

     protected void Application_AuthenticateRequest(Object sender, EventArgs e)
            {
                if (!(HttpContext.Current.User == null))
                {
                    if (HttpContext.Current.User.Identity.IsAuthenticated)
                    {
                        if (HttpContext.Current.User.Identity.GetType() == typeof(FormsIdentity))
                        {
                            FormsIdentity fi = (FormsIdentity)HttpContext.Current.User.Identity;
                            FormsAuthenticationTicket fat = fi.Ticket;
    
                            String[] Roles = fat.UserData.Split(',');
                            HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(fi, Roles);
                        }
                    }
                }
            }

    Örnek Controller'lar

    Dashborad

        [Authorize(Roles = "Dashboard")]
        public class DashboardController : Controller
        {
    
    }

    Person Controller

        [Authorize(Roles = "Person")]
        public class PersonController : Controller
        {
    
    }

    Diğer Controller'lar bu şekilde olmalıdır


    Üretmek en büyük icraatır

    6 Kasım 2019 Çarşamba 06:20