MVC3 区域的身份验证

发布于 2024-12-25 06:11:56 字数 472 浏览 1 评论 0原文

我正在使用 Areas 创建一个 mvc 应用程序。 我需要针对这些区域采用不同的身份验证方法。

我通常使用httpmodules进行身份验证,在http模块中我检查用户是否经过身份验证(我通常使用cookie),如果没有,我重定向他。

因此,我有一个用于验证整个应用程序的 httpmodule,并且我想注册另一个 httpmodule 以在该区域进行身份验证。

我尝试过:

  1. 使用区域文件夹中的 web.config 文件并在那里列出 httpmodule 。
  2. 使用 web.config 文件中的位置部分。

两者都对我不起作用,httpmodule 从未被调用。

  1. 我如何为一个区域注册一个httpmodule。
  2. 我如何覆盖整个应用程序的httpmodule。
  3. 如果这是错误的方法,那么更好的方法是什么?

谢谢

I am creating a mvc application with Areas.
I Need to have different authentication method for these areas.

I Usually use httpmodules for authentication, in the http module i check if the user is authenticated (i usually use cookies) and if not i redirect him.

So i have an httpmodule for authenticating the whole application and i want to register another httpmodule for authenticating in the area.

I tried:

  1. using a web.config file in the area folder and listing the httpmodule there.
  2. Using a location section in the web.config file.

Both did not work for me the httpmodule never got called.

  1. How can i register a httpmodule for an area.
  2. How can i override the httpmodule of the whole app.
  3. If this is the wrong way of going about it what is a better way of doing this.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

祁梦 2025-01-01 06:11:56

您始终可以在覆盖 AuthorizeCore 的位置编写自定义 AuthorizeAttribute。在此功能中,您始终可以重定向到特定的登录网址。

public class CustomAuthorizationAttribute : AuthorizeAttribute
{
    private string notifyUrl = string.Format("{0}{1}", GeneralHelper.BaseSiteUrl, "Login");

    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        if (httpContext.User.Identity.IsAuthenticated)
        {
            // get userinformation
            return true;
        }

        httpContext.Response.Redirect(NotifyUrl);
        return false;
    }
}

如果不包含重定向,它将被重定向到 web.config 中定义的 loginurl

You can always write a custom AuthorizeAttribute where you override AuthorizeCore. In this function you always can redirect to the specific loginurl.

public class CustomAuthorizationAttribute : AuthorizeAttribute
{
    private string notifyUrl = string.Format("{0}{1}", GeneralHelper.BaseSiteUrl, "Login");

    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        if (httpContext.User.Identity.IsAuthenticated)
        {
            // get userinformation
            return true;
        }

        httpContext.Response.Redirect(NotifyUrl);
        return false;
    }
}

If you don't included the redirect, it wil be redirected loginurl defined in web.config

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文