MVC de Role Yoksa Uyarı Vermek

kullanici952282 (13) 8 yıl önce sordu

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.

Toplam 1 cevap


alattin (17125) 8 yıl önce cevapladı

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

 

kullanici952282 8 yıl önce

Cevabınız için teşekkürler, bahsettiğiniz yöntem ile düzenledim :)