Generic Handler ashx中的FormsAuthentication.SetAuthCookie

时间:2013-03-26 16:52:28

标签: forms-authentication ashx formsauthentication generic-handler

我有一个Generic Handler,我想根据一些查询字符串自动登录。

但是我设置了FormsAuthentication.SetAuthCookie(user.Name,false),但是HttpContext.Current.User.Identity.IsAuthenticated返回false,由于web.config中设置的限制,我无法重定向。 / p>

那么如何在.ashx文件中设置FormsAuthentications?

2 个答案:

答案 0 :(得分:1)

要使用FormsAuthentication模块执行登录,您可能只想使用RedirectFromLoginPage静态方法,其中包含以下内容:

  1. 准备身份验证令牌;
  2. 加密;
  3. 将其添加到响应的cookie集合中;
  4. 执行重定向到所需页面(或默认值,根据您的web.config)。
  5. 以下是处理程序的简短原型:

    public void ProcessRequest(HttpContext context)
    {
        // TODO: Determine the user identity
    
        var username = context.Request.QueryString["username"];
    
        FormsAuthentication.RedirectFromLoginPage(username, true);
    }
    

    如果您对此方法执行工作的方式感到不舒服,您可以手动方式执行每项活动:

    1. 使用用户名准备FormsAuthenticationTicket;
    2. 通过Encrypt方法对其进行加密;
    3. 将其添加到response Cookies;
    4. 发出redirect

答案 1 :(得分:0)

您是否尝试将其添加为web.config中的位置路径?

<configuration>
   <location path="foo.ashx">
      <system.web>
         <authorization>
            <allow users="*"/>
         </authorization>
      </system.web>
   </location>
   <location >
      <system.web>
         <authorization>
            <allow users="?"/>
         </authorization>
      </system.web>
   </location>
</configuration>