2015-04-25 174 views
3

我對ASP.NET很陌生,我試圖創建一個簡單的CRUD應用程序,如果用戶沒有登錄,我想讓某些頁面重定向到登錄頁面英寸我不想做一個站點範圍重定向登錄所有不是主頁的頁面。我一直在與控制器瞎搞,並已發現,在控制器中使用此代碼會重定向到登錄頁面,如果用戶沒有登錄:ASP.NET將某些頁面重定向到登錄頁面

public ActionResult Index() 
{ 
    if (User.Identity.IsAuthenticated) 
    { 
     return View(db.Events.ToList()); 
    } 
    else 
    { 
     Response.Redirect("Account/Login",true); 
     return null; 
    } 
} 

我有一種感覺,這絕對不是最好的ASP.NET的實踐。如果有人能夠解釋爲什麼,或者指出我會朝着正確的方向發展,那就太好了。

回答

3

您可以使用[Authorize]屬性,如果用戶未被授權,它將重定向到登錄頁面。

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

這是你需要在web.config

+0

這做到了!謝謝!非常感謝:) – ChrisRiv91

+0

如果這個答案已經解決了您的問題,請選擇它作爲選定的答案@ ChrisRiv91 –

+1

@AydinAdn剛剛做了,被鎖定了幾分鐘:) – ChrisRiv91

1

配置您的登錄頁面,您的使用整個控制器或特定的控制器方法上Authorize屬性。如果用戶還沒有的角色,因爲他們沒有登錄,他們將被重定向到登錄頁面

[Authorize(Roles = "SomeAppRole")] 
public class HomeController : Controller 

[Authorize(Roles = "SomeAppRole")] 
public ActionResult Index() 
{ 
    // etc 
} 

注意,角色是可選的。

+0

感謝您的迴應!這些角色可能會在後來派上用場。 – ChrisRiv91

1

您可以使用您的操作中的授權屬性。

[Authorize] 
public class HomeController: Controller{ 

    [Authorize] 
    public ActionResult Index() 
    {} 


    [Authorize] 
    public ActionResult Index() 
    {} 

    [AllowAnonymous] 
    public ActionResult Help() 
    {} 
} 

您可以在控制器級別應用Authoirze屬性,以便您不必將其應用於控制器中的所有操作。

如果你想忽略使用在控制器級別應用授權任何行動,那麼你可以用標記[使用AllowAnonymous] action屬性

+0

很高興知道[AllowAnonymous],這一定會有所幫助! – ChrisRiv91