0

У меня есть общий обработчик, в котором я хотел бы автозапустить, основанный на некоторых querystrings.FormsAuthentication.SetAuthCookie в Generic Handler ashx

Но тогда я установил FormsAuthentication.SetAuthCookie (user.Name, false), но HttpContext.Current.User.Identity.IsAuthenticated возвращает false, и я не могу перенаправить из-за ограничений, установленных в web.config.

Как я могу установить FormsAuthentication в .ashx-файле?

+0

Вы хотите использовать этот ashx для входа? – csg

ответ

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. добавьте его в response Cookies;
  4. issue a redirect.
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>