2009-05-29 18 views
7

Ben bir kullanıcı oturum değilken giriş sayfasına yönlendirir bir MVC denetleyicisi bir aşağıdaki yöntemlerMVC Yetkilendirme - Birden giriş sayfaları

[Authorize] 
public ActionResult Search() { 
    return View(); 
} 

[Authorize] 
public ActionResult Edit() { 
    return View(); 
} 

hızlı/kolay/standart yolu var mı. ikinci işlemi web.config dosyasında tanımlanan sayfadan farklı bir giriş sayfasına yönlendirmek ister misiniz?

Yoksa yerleşik böyle bir işlevselliği (bu, hem WinForms ve MVC için geçerlidir) yok

public ActionResult Edit() { 
    if (IsUserLoggedIn) 
    return View(); 
    else 
    return ReturnRedirect("/Login2"); 
} 

cevap

18

Ben özel bir yetkilendirme filtre oluşturarak mümkün olduğunu düşünüyorum: eyleminizden olarak

public class CustomAuthorization : AuthorizeAttribute 
{ 
    public string LoginPage { get; set; } 

    public override void OnAuthorization(AuthorizationContext filterContext) 
    { 
     if (!filterContext.HttpContext.User.Identity.IsAuthenticated) 
     { 
      filterContext.HttpContext.Response.Redirect(LoginPage); 
     } 
     base.OnAuthorization(filterContext); 
    } 
} 

:

[CustomAuthorization(LoginPage="~/Home/Login1")] 
public ActionResult Search() 
{ 
    return View(); 
} 

[CustomAuthorization(LoginPage="~/Home/Login2")] 
public ActionResult Edit() 
{ 
    return View(); 
} 
+1

Güzel çözüm. Bunu yapabileceğinin farkında değildim. http://www.asp.net/LEARN/mvc/tutorial-14-cs.aspx, açıklama isteyen kişiler için özel Eylem Filtreleri oluşturma konusunda iyi bir girişe sahiptir. –

+0

Bu, rol kontrolünü bozuyor mu? – Sinaesthetic

+0

Bu çözümü seviyorum –

1

Web.config tabanlı form kimlik doğrulaması gibi bir şey yapmak zorunda mıyız. Bunu kendin işlemek zorunda (ya aracılığıyla bir HttpModule veya ActionFilter, Bahsettiğiniz yöntem veya başka bir yöntemi)

İlgili konular