Pergunta

Eu estou trabalhando na integração de um site Silverlight em nosso aplicativo existente e estou tentando obter a funcionalidade de início de sessão de trabalho. As necessidades de aplicações Silverlight para ter seu página de login próprio, e as necessidades de login para utilizar a autenticação de formulários ASP.NET existente. Como parte do processo de login, estamos chamando algum código externo, portanto, usando os métodos de script que expõe System.Web.ApplicationServices.AuthenticationService não é uma opção. Eu tentei usar FormsAuthentication.Authenticate de fazer isso, mas não funcionou. Alguém tem alguma idéia de como contornar isso?

Foi útil?

Solução

Parece como se você precisa criar um websevice invólucro que pode implementar o suporte a autenticação de formulários.

Este é algo que eu tenha feito, por exemplo, eu criei um serviço WCF com a seguinte interface que é referenciado pelo meu cliente Silverlight:

[ServiceContract]
    public interface IAuthenticationService
    {
        [OperationContract()]
        string Login(string username, string password, bool isPersistent);
        [OperationContract()]
        bool Logout();
        [OperationContract()]
        string IsLoggedIn();     
    }

e, em seguida, na minha aplicação você pode chamar código personalizado e também usar a api autenticação de formulários, por exemplo, para entrar você poderia ter:

try
            {
                //Call you external code here
                //Then use the membership provider to authenticate
                if (Membership.ValidateUser(username, password))
                {

                    FormsAuthentication.SetAuthCookie(username, isPersistent);

                }
            }
            catch (Exception ex)
            {
                Logging.LogException("Error in Login", ex);
            }

Também não é necessário incluir o seguinte atributo acima de você definição de classe na sua implementação do serviço para ter asp.net compat habilitado que lhe dará acesso ao HttpContext:

 [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]

Outras dicas

A solução é simples. Basta criar um provedor de associação personalizado que chama o seu código personalizado. Consulte este artigo no MSDN biblioteca para obter mais informações. Há também amostras completos disponíveis on 15 segundos e uma vídeo passo a passo no site ASP.NET . Finalmente, parece Microsoft lançou o fonte para o built-in provedor de associação

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top