2012-10-03 38 views
3

我有一個asp.net mvc應用程序。除了登錄頁面(Annonymous)之外,所有頁面只能在身份驗證(授權屬性)之後才能在asp.net mvc應用程序中訪問。在登錄頁面中,我們爲新用戶註冊鏈接。我如何限制「註冊」鏈接只能爲特定用戶或特定角色訪問。限制訪問註冊用戶在Asp.net MVC

我們不希望每個人都使用註冊頁面來創建用戶名和密碼。

ASP.NET MVC授權如何實現這一點。我們在應用程序中使用標準的SQL成員和角色提供程序。

+0

它有道理嗎?如果你想註冊新用戶,這意味着他還沒有帳戶,所以他是匿名的你.. –

+0

同意。如果用戶沒有註冊,他將無法訪問。但我們只想允許特定用戶註冊(可能基於用戶名)。 – Venki

+0

什麼用戶名?如果他們沒有註冊,他們沒有用戶名? –

回答

4

確保一個用戶登錄才能訪問視圖

做到這一點,最簡單的方法是使用上述控制器的操作方法的授權屬性。例如,我們只想讓用戶在已經登錄到網站的情況下更改密碼。爲了防止非授權用戶到達更改密碼圖,我們可以限制這樣的訪問:



[Authorize] 
public ActionResult ChangePassword() 
{ 
    ViewData["PasswordLength"] = MembershipService.MinPasswordLength; 
    return View(); 
} 

您還可以通過對用戶對象這樣檢查手動完成這一

public ActionResult ChangePassword() 

    { 
     if (!User.Identity.IsAuthenticated) 
      return RedirectToAction("LogOn", "Account"); 

     ViewData["PasswordLength"] = MembershipService.MinPasswordLength; 
     return View(); 
    } 


確保用戶在一個特定的角色來獲得一個視圖

你可能h出入提供一些應該只能訪問特定角色的用戶的意見。這也可以通過授權實現的屬性是這樣的:

public ActionResult Index() 
{ 
    if (!User.IsInRole("Administrator")) 
     return RedirectToAction("LogOn", "Account"); 

    return View(); 
} 

參考:Using our Role and Membership Providers



[Authorize(Roles = "Administrator")] 
public ActionResult Index() 
{ 
    return View(); 
} 

您可以在代碼使用下面的方法以及實現這一目標