2013-11-22 26 views
6

kullanarak herhangi bir içeriği görmek için oturum açmak için nasıl zorlanır Bir 'ASP.NET MVC 4' uygulama üzerinde çalışıyorum ve 'SimpleMembershipProvider' kullanın. Uygulama intranette kullanılacak ve yetkili kullanıcılar için hiçbir içerik bulunmayacaktır, bu yüzden kullanıcıyı gerçek site içeriğine bildirmeden önce giriş yapmaya zorlamak istiyorum.Kullanıcı, ASP.NET MVC 4

Bunun çok basit bir görev olduğunu düşünüyorum, ancak bu mantığı ilk kez uyguladığımdan ve bunu da MVC 4/SimpleMemebrship stilinde yapmak istiyorum.

Ben uygulanmalıdır düşünüyorum yolu web.config'de bu eklemek için ilk: Ben bu yüzden bu koymak daha iyi olduğunu düşünüyorum anonim sağlayacak eylem olmaz sonuçta

<authentication mode="Forms"> 
     <forms loginUrl="~/Account/Login" timeout="15" slidingExpiration="true" enableCrossAppRedirects="false" protection="All" /> 
    </authentication> 

İşte.

Ve benim varsayılan Rota değişiyor: gördüğüm kadarıyla

routes.MapRoute(
       name: "Default", 
       url: "{controller}/{action}/{id}", 
       defaults: new { controller = "Account", action = "Login", id = UrlParameter.Optional } 
      ); 

, anonim sağlayacak tek koşul olacaktır. Ancak, varsayılan rotayı Login olarak değiştirmekten endişe ediyorum, bunun bazı beklenmedik dezavantajlara yol açmayacağından emin değilim.

Ben de MVC 4 Internet Template tarafından ve oluşturulan varsayılan yapısını korumak için fikir sahibi sadece Home denetleyici alarak sorumluluk Index eylemi bırakarak ama mantık açıktır çünkü bu senaryoyu sevmiyorum - kullanıcı giriş yapmalısınız Herhangi bir erişim elde etmek için ve hatta Home/Index aklıma bazı erişim.

Bu tür davranışları hayata geçirmenin yolu nedir? Bu hakkı uygulamak için yapmam gereken temel adımlar nelerdir?

cevap

19

Bunu, global filtre olarak Authorize özniteliğini kaydederek başarabilirsiniz. Körük sizin RegisterGlobalFilters yöntemi gibi görünmelidir nasıl bir örnektir: yerinde bununla

public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
{ 
    filters.Add(new HandleErrorAttribute()); 
    filters.Add(new AuthorizeAttribute()); 
} 

, anonim kullanıcıların oturum açma sayfasına erişmek için izin gerekecek. Bunu yapmak için, AllowAnonymous özniteliğiyle Giriş eylem yönteminize ek açıklama ekleyin.

[AllowAnonymous] 
[HttpGet] 
public ActionResult Login() 
{ 
... 
} 

POST isteğini alan Oturum açma eylemi yöntemi için de aynısını yapın.