MVC3和Membership API配置

时间:2011-11-30 21:46:31

标签: asp.net-mvc asp.net-mvc-3 membership-provider

我正在使用创建新MVC应用时出现的默认会员代码。
//帐户控制器:

        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));
            }
        }

如何在注册前阻止用户直接进入学生控制系统。我有其他页面,我不应该允许用户在注册之前看到。如果用户在注册之前尝试转到页面,我想将它们重定向到帐户控制器。

另外如何为特定用户显示特定页面(Actions),在asp.net app中我在web.config文件中使用了以下代码,它是否与mvc中的类似?

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

谢谢

2 个答案:

答案 0 :(得分:1)

对于特定于操作的授权,您可以使用Action方法的[Authorize]属性。这将要求用户在能够在yoru控制器中执行该Action方法之前进行身份验证。

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

对于您的web.config授权规则,您可以在目录中为要保护授权用户(或特定组,用户等)的视图创建web.config。您只需将带有授权规则的web.config放入该目录即可。

答案 1 :(得分:0)

.NET MVC提供非常好的选项 - 在加载Action之前使用Custome过滤器和属性来执行检查。

例如,您需要将acsess限制为某个Action,因此您只需要在其上设置[Authorize]属性。像这样:

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

如果要将acsess限制为此控制器中的所有Actions,则应将此属性放在控制器类的顶部。像这样:

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

更多选项,例如,如果您只想为具有正确用户角色的用户提供访问权限:

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