代码之家  ›  专栏  ›  技术社区  ›  Ropstah

.NET应用程序\u BeginRequest-如何获取用户引用?

  •  14
  • Ropstah  · 技术社区  · 15 年前

    Application_BeginRequest . 我在用房子 Context.User 但我得到一个 NullReferenceException . 是否可以在应用程序\u BeginRequest中获取用户对象引用?

    2 回复  |  直到 15 年前
        1
  •  25
  •   Community Mohan Dere    10 年前

    尝试改用应用程序\u AuthenticateRequest。

    https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-5771721.html

    以及应用程序生命周期的MSDN演练: http://msdn.microsoft.com/en-us/library/ms178473.aspx

    编辑: 我知道你在做什么。将if语句更改为and if not语句(如果语法错误,请原谅,我不使用VB.NET):

     Sub Application_AuthenticateRequest() 
       If Context.User <> Nothing Then 
          Throw New Exception("User now exists") 
     End Sub 
    

    您会注意到这个方法被多次命中。直到第二次或第三次才会抛出异常。这是因为每个请求都遵循应用程序生命周期。因此,与其在用户为null时执行任何操作,不如在用户不为null时执行。

    如果您的目标是动态限制访问,那么应该创建一个单独的HttpModule并将其分配给要限制的文件

    但是,您需要小心不要重写整个ASP.NET应用程序安全基础结构。您可以根据角色限制对某些文件夹的访问。

        2
  •  9
  •   Julien Lebosquain    15 年前

    不,你必须用 Application_AuthenticateRequest 相反。这是你最早拥有用户的地方。