0

我有一个通用处理程序,我想根据一些查询字符串自动登录。

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

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

4

2 回答 2

1

要使用 FormsAuthentication 模块执行登录,您可能只想使用RedirectFromLoginPage静态方法,它在幕后:

  1. 准备认证令牌;
  2. 加密它;
  3. 将其添加到响应的 cookie 集合中;
  4. 执行重定向到所需页面(或默认页面,根据您的 web.config)。

这是您的处理程序的简短原型:

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. 将其添加到响应 Cookies中;
  4. 发出重定向
于 2013-04-04T06:43:02.333 回答
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>
于 2013-04-04T15:26:56.380 回答