2011-11-30 26 views
1

我使用創建新MVC應用程序時出現的默認成員代碼。
//帳戶控制:MVC3和Membership API配置

 if (ModelState.IsValid) 
     { 
      // Attempt to register the user 
      MembershipCreateStatus createStatus; 
      Membership.CreateUser(model.UserName, model.Password, model.Email, null, null, true, null, out createStatus); 

      if (createStatus == MembershipCreateStatus.Success) 
      { 
       FormsAuthentication.SetAuthCookie(model.UserName, false /* createPersistentCookie */); 
       return RedirectToAction("Index", "Student"); 
      } 
      else 
      { 
       ModelState.AddModelError("", ErrorCodeToString(createStatus)); 
      } 
     } 

如何防止用戶在註冊前直接到學生控制。我有其他網頁,我不應該允許用戶在註冊之前看到。如果用戶在註冊之前嘗試轉到頁面,我想將它們重定向到賬戶控制器。

另外我如何顯示特定的用戶,在asp.net應用程序中的特定頁面(操作)我在web.config文件中使用了下面的代碼,它在mvc中類似嗎?

<location path="Admin/Test.aspx"> 
    <system.web> 
     <authorization> 
     <deny users="?"/> 
     <allow users="*"/> 
    </authorization> 
    </system.web> 
</location> 

謝謝

回答

1

採取具體行動的授權,你可以利用你的行動方法[Authorize]屬性。這將要求用戶在能夠在yoru控制器中執行Action方法之前進行身份驗證。

[Authorize] 
public ActionResult YourActionMethod() 
{ 
    // your code here 
} 

至於你的web.config授權規則,你可以在一個目錄中創建了要確保授權用戶只(或特定羣體,用戶等),這些看法的web.config文件。您只需將帶有授權規則的web.config放入該目錄即可。

+0

完美。 – Ben

+0

只是好奇你有一個web.config應該如何配置YourActionMethod只用於管理員用戶的例子嗎? – Ben

+0

@ user1042528您可以使用相同的屬性將操作限制爲特定角色 - 只需用'[Authorize(Roles =「Admin」)]' – StanK

0

.NET MVC提供非常好的選項 - 使用Custome篩選器和屬性在加載Action之前執行檢查。

例如,您需要將acsess限制爲某個Action,因此您只需要在其上設置[Authorize]屬性。就像這樣:

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

如果你想限制acsess在這個控制器的所有動作,你應該只是把這個屬性附加傷害的控制器類的頂部。就像這樣:

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

更多選擇,例如,如果你想只提供用戶接入誰是正確的用戶角色:謝謝

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

完美謝謝您的動作。 – Ben

+0

歡迎您! –