我正在使用创建新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>
谢谢
答案 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();
}