MVC de Role Yoksa Uyarı Vermek

1

Merhaba,Kullanıcı login olduktan sonra eğer controller için yetkim yoksa nasıl uyarı verdirebilirim ? Ya da istediğim sayfaya nasıl yönlendirebilirim ? 

Şu anda kullanıcıya role ekleyebiliyorum,role tanımlıysa kullanıcı controller a erişebiliyor fakat yetkisi yoksa uyarı vermek istiyorum.

kullanici952282 kullanici952282 (13)
8 yıl önce sordu

    Toplam 1 Cevap


    0

    Öncelikle projenizin Rootuna şu şekilde bir class ekleyin:

    using System.Web.Mvc;
    namespace WebApplication9
    {
      
            public class ErisimKontrolOzelligi : AuthorizeAttribute
            {
                public override void OnAuthorization(AuthorizationContext filterContext)
                {
                    base.OnAuthorization(filterContext);
                    if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
                    {
                        filterContext.Result = new RedirectResult("/login");
                        return;
                    }
    
                    if (filterContext.Result is HttpUnauthorizedResult)
                    {
                        filterContext.Result = new RedirectResult("/hata/erisimengellendi");
                    }
                }
            }
       
    }

    Daha sonra Controller'ı şu şekilde düzenleyin:

    using System.Web.Mvc;
    
    namespace WebApplication9.Controllers
    {
       [ErisimKontrolOzelligi(Roles="admin")]
        public class uzmanimController : Controller
        {
            // GET: uzmanim
            public ActionResult Index()
            {
                return View();
            }
        }
    }

    ErisimKontrolOzelligi class'ı içindeki /login ve /hata/erisimengellendi yönlendirmelerini kendinize göre düzenleyin.

    AuthorizeAttribute sınıfından yeni bir erişim denetleme özelliği türetiyoruz. Daha sonra OnAuthorization metodunun üzerine yazarak bu metodun içinde gerekli kontrolleri yapıyoruz. 

    En sonunda da Controller'a yeni tanımladığımız özelliği ekliyoruz.

     

    alattin alattin (16999)
    8 yıl önce cevaplandı

    • Cevabınız için teşekkürler, bahsettiğiniz yöntem ile düzenledim :) kullanici952282 8 yıl önce
    üyelik gerektirir

    Cevap yazabilmek için üye girişi yapmalısınız.

    Eğer uzmanim.net üyesiyseniz giriş yapabilirsiniz: üye girişi yap
    uzmanim.net'e üye olmak çok kolaydır: hemen kayıt ol