ASP.NET将某些页面重定向到登录页面

时间:2015-04-25 03:38:38

标签: c# asp.net-mvc redirect

我是ASP.NET的新手,我尝试创建一个简单的CRUD应用程序,如果用户没有登录,我希望某些页面重定向到登录页面。我不想&# 39; t想要对所有不是主页的页面进行站点范围重定向登录。我一直在搞乱控制器,并发现如果用户没有登录,在控制器中使用此代码将重定向到登录页面:

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

我有一种感觉,这绝对不是ASP.NET的最佳实践。如果有人可以解释为什么或指出我正确的方向,这将是伟大的。

3 个答案:

答案 0 :(得分:3)

您可以使用[Authorize]属性,如果用户未获得授权,它将重定向到登录页面。

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

这是您需要在web.config中配置的登录页面

答案 1 :(得分:1)

您在整个控制器或特定控制器方法上使用Authorize属性。如果用户由于未登录而尚未拥有角色,则会将其重定向到登录页面

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

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

请注意,角色是可选的。

答案 2 :(得分:1)

您可以在操作中使用“授权”属性。

[Authorize] 
public class HomeController: Controller{

  [Authorize]
  public ActionResult Index()
  {}


  [Authorize]
  public ActionResult Index()
  {}

  [AllowAnonymous]
  public ActionResult Help()
  {}
}

您可以在控制器级别应用Authoirze属性,这样就不必将其应用于控制器中的所有操作。

如果要忽略使用在控制器级别应用的授权的任何操作,则可以使用[AllowAnonymous]属性标记操作