Soran
MVC authorize ile yetkilendirme

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
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