2016-04-11 27 views
0

Bir MVC uygulamasına sahibiz, kullanıcının oturumda saklanan bir değere dayanarak denetleyici eylemlerine erişmesini kısıtlayan bir uygulama. Ben hayata geçirdik Bir MVC denetleyicisindeki kullanıcıları yeniden yönlendirin

aşağıdaki gibidir:

public partial class MyBookingController : CruisesDesktopControllerBase 
{ 
    private bool CheckLoggedIn() 
    { 
     return MyBookingSessionInfo.OzBookingId > 0; 
    } 

    public virtual ActionResult Summary() 
    { 
     //Ensure user is logged in 
     if (!CheckLoggedIn()) 
      return RedirectToAction(MVC.MyBooking.Login()); 

     //Prepare the view model 
     SummaryViewModel summaryViewModel = new SummaryViewModel 
              { 
               OzBookingId = MyBookingSessionInfo.OzBookingId 
              }; 

     return View(summaryViewModel); 
    } 

} 

Yani yerine ben korumak istiyorum denetleyici eylemleri üstündeki eğer testi yapıyor, kontrolör eylem ek açıklama olarak nerede bunu yapmanın bir yolu var "oturum açmış kısıtlamayı" zorlamak ve dolayısıyla test bloğunu kaldırmak için bir yol var mı?

+0

Olası yinelenen başarısız Mantık [Yetki ASP.NET MVC Özellik geçersiz kıl] (http://stackoverflow.com/questions/746998/override-authorize-attribute-in-asp-net-mvc) – Steve

+0

Evet, [Authorize] 'özniteliğini kullanarak. –

+0

@StephenMuecke [Authorize], bu durumda olmayan MS kimlik doğrulama hattının kullanımını kabul eder. – TheEdge

cevap

3

Özel bir AuthorizeAttribute oluşturabilir ve AuthorizeCore yöntemini geçersiz kılabilirsiniz.

Bu özniteliği işleminize ekleyin.

[AuthorizeUser] 
public virtual ActionResult Summary() 
+0

Bu, şeylerin yetkilendirmesini yapıyor. Yetkilendirme başarısız olduğunda yeniden yönlendirmenin nerede gerçekleşeceğini nasıl kontrol ederim? – TheEdge

+0

Bu sizin '/ * özel mantığınız * /' –

+0

@BrendanGreen Bu bir BOOLEAN döndürür. Yani FALSE döndürüyorum diyelim. Yönlendirmenin nereye gittiğini nasıl kontrol ederim? – TheEdge

0

Sen AuthorizeAttribute miras ve aşağıdaki yöntemleri AuthorizeCore(HttpContextBase) geçersiz kılabilir - yetkilendirme mantığı
HandleUnauthorizedRequest(AuthorizationContext) - yetkilendirme ait

public class CheckLoggedInAttribute : AuthorizeAttribute 
{ 
    protected override bool AuthorizeCore(HttpContextBase httpContext) 
    { 
     //Authorization logic Here. You can access the session using httpContext. Return false if your authorization fails 
    } 

    protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) 
    { 
     //Logic when authorization fails, modify the ViewResult or something. 
     base.HandleUnauthorizedRequest(filterConext) 
    } 
} 
İlgili konular