2010-01-14 14 views
6

aitse ASP.NET MVC, kontrol ettiği durumda doğru yönde işaret edin!kullanıcı Belki ben yanlış bir yol bu yaklaşıyorum ve eylem filtrelerde her şeyi yapıyor olmalı [x] grubuna

if(Request.IsAuthenticated) 
    return View("IndexRegistered"); 
else 
    return View("IndexGuest"); 

Bu iyi ama söylemek ı bölmek istiyorum: Bir HomeController Endeksi aksiyon, içeriğin iki farklı türde sunar şöyle ki benim ASP.NET MVC uygulama

kuruyorum üç yüzden Yönetici üyeleri

if(Request.IsAuthenticated) 
{ 
    if(/* user is a member of administrators */) 
    return View("IndexAdministrator"); 
    else 
    return View("IndexCustomer"); 
} 
else 
    return View("IndexGuest"); 

birisi bu bulmacanın eksik parçası olarak aydınlatmak bana ... kendi sayfasını olsun?

cevap

20

yetkilendirme Action Filter ait Roles özelliğini kullanın:

[Authorize(Roles="Administrators,Moderators")] 
public ActionResult SomeAction(){ 

} 

Ya User.IsInRole() yöntemi kullanın: Doğrulama sağlayıcıya bakarsak

if(User.IsInRole("Administrator")) { ... } 
+0

http://blog.wekeroad.com/blog/aspnet-mvc-securing-your-controller-actions/ –

+3

if (User.IsInRole ("Yönetici")) tam ihtiyacım olan şeydi, teşekkürler! Bunu yapmak için daha iyi bir yol varsa, hala girişe açıktır. Yetkilendir'i kullanarak ilk örneği olarak, (Ben gerçekten yolu neden olamaz gerçi) Anladığım kadarıyla haricinde, sadece bir battaniye olan katı değil koşullarını/izin koşulu inkar teklifler benim için daha iyi bir yol olurdu gibi görünüyor Ben neyin peşindeyim. – nathanchere

+0

Rol özelliğine birden çok rol ekleyebilirsiniz, kodu güncelleyeceğim. –

2

dışarı-of-the-kutu geldiği

: varsayılan MVC projesi dolayısıyla yukarıdaki kodunuzu olacak, bu oturumda bunu orada kendi rol desteği eklemek ve izlemek kolaydır şablonları

ve sonra gibi imkanlar açılır:

if(Request.IsAuthenticated) 
    return View("Index" + Session["Role"]); 
else 
    return View("IndexGuest");