首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ASP.Net MVC 3重定向UnAuthorized用户不登录loginUrl

在这个问答内容中,我们要讨论的是如何在ASP.NET MVC 3中实现未授权用户的重定向,并将他们重定向到登录页面。以下是一个完整的答案,涵盖了问题的各个方面:

问题描述

在ASP.NET MVC 3中,如何将未授权用户重定向到登录页面?

解决方案

要实现这个功能,我们需要在ASP.NET MVC 3项目中进行以下操作:

  1. Web.config文件中配置身份验证和授权。
  2. 创建一个自定义的AuthorizeAttribute类。
  3. 在需要授权的控制器和操作上使用自定义的AuthorizeAttribute类。

详细步骤

  1. Web.config文件中配置身份验证和授权:
代码语言:xml<system.web>
复制
 <authentication mode="Forms">
   <forms loginUrl="~/Account/Login" timeout="2880" />
  </authentication>
 <authorization>
    <deny users="?" />
  </authorization>
</system.web>

在这里,我们设置了登录页面为~/Account/Login,并将未授权用户重定向到该页面。

  1. 创建一个自定义的AuthorizeAttribute类:
代码语言:csharp
复制
public class CustomAuthorizeAttribute : AuthorizeAttribute
{
    protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
    {
        if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
        {
            base.HandleUnauthorizedRequest(filterContext);
        }
        else
        {
            filterContext.Result = new RedirectResult("~/Error/Unauthorized");
        }
    }
}

在这里,我们创建了一个名为CustomAuthorizeAttribute的自定义AuthorizeAttribute类,并重写了HandleUnauthorizedRequest方法。如果用户未经过身份验证,则将其重定向到登录页面。如果用户已经经过身份验证,但没有权限访问该页面,则将其重定向到错误页面。

  1. 在需要授权的控制器和操作上使用自定义的AuthorizeAttribute类:
代码语言:csharp
复制
[CustomAuthorize]
public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }
}

在这里,我们将CustomAuthorize属性应用于HomeController类,以确保只有经过身份验证的用户才能访问该控制器中的操作。

总结

通过以上步骤,我们可以实现在ASP.NET MVC 3中将未授权用户重定向到登录页面。这种方法可以应用于任何ASP.NET MVC 3项目,并且可以根据需要进行自定义。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券