我是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的最佳实践。如果有人可以解释为什么或指出我正确的方向,这将是伟大的。
答案 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]属性标记操作