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)
3 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 (13141)
3 yıl önce cevaplandı

  • Cevabınız için teşekkürler, bahsettiğiniz yöntem ile düzenledim :) kullanici952282 3 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