0

我可以在哪里插入自定义提供程序来设置请求上下文?

我想在“从属”模式下运行 ASP.NET MVC 应用程序,同时逐渐从旧系统转换功能。每个请求都有一个 cookie,我想获取 cookie,进行外部调用以将其解析为用户身份,并为请求的其余部分设置该用户身份。

我可能会设置一个表单身份验证 cookie,或者使用 Session,但关于身份验证的事实来源必须是每个请求的外部设置的 cookie。

最好的方法是什么?我在哪里插入?我查看了 Authentication 提供程序和 Authorization 属性,但这些似乎都不适合。

4

2 回答 2

1

我会认为 HttpModule 非常适合这种情况?

如果我理解正确的话,我最近在一个项目上做了类似的事情:

  public class UserSessionHttpModule : IHttpModule
{

    private HttpApplication mApplication;

    public void Dispose()
    {
    }

    public void Init(HttpApplication context)
    {
        mApplication = context;
        context.BeginRequest += new EventHandler(CheckUserSession);
    }

    private void CheckUserSession(Object sender, EventArgs e)
    {
        var extension = Path.GetExtension(mApplication.Context.Request.Path);

        if (extension == "" || extension == ".aspx")
        {
            var userSessionService = ObjectFactory.GetInstance<IUserSessionService>();
            userSessionService.CheckUserSession();
        }

    }
}
于 2012-06-20T19:32:51.083 回答
0

您可以覆盖页面中的Init方法Global.asax并监听PostAuthenticateRequest事件,事件在身份验证后触发,因此您可以从表单中更改您喜欢的任何值验证 cookie 并注入您自己的

于 2012-06-20T19:33:09.413 回答