Я работаю над интеграцией сайта silverlight в наше существующее приложение и пытаюсь заставить работать функцию входа в систему. У приложения Silverlight должна быть собственная страница входа в систему, а вход в систему должен использовать существующую проверку подлинности форм ASP.NET. В рамках процедуры входа в систему мы вызываем некоторый внешний код, поэтому использование скриптовых методов, которые предоставляет System.Web.ApplicationServices.AuthenticationService, не является вариантом. Я попытался использовать для этого FormsAuthentication.Authenticate, но это не сработало. Есть ли у кого-нибудь идеи, как это обойти?
Как я могу с помощью форм аутентифицировать пользователя в настраиваемом веб-сервисе?
Ответы (2)
Похоже, вам нужно создать веб-сервис-оболочку, который может реализовать поддержку проверки подлинности с помощью форм.
Я сделал это, например, я создал службу WCF со следующим интерфейсом, на который ссылается мой клиент Silverlight:
[ServiceContract]
public interface IAuthenticationService
{
[OperationContract()]
string Login(string username, string password, bool isPersistent);
[OperationContract()]
bool Logout();
[OperationContract()]
string IsLoggedIn();
}
а затем в моей реализации вы можете вызвать настраиваемый код, а также использовать api проверки подлинности форм, например, для входа в систему вы могли бы иметь:
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);
}
Также вам не нужно включать следующий атрибут над определением класса в вашу реализацию службы, чтобы включить asp.net compat, что даст вам доступ к HttpContext:
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
Решение простое. Просто создайте настраиваемого поставщика членства, который вызывает ваш настраиваемый код. Дополнительную информацию см. В этой статье о библиотеке MSDN. Полные образцы также доступны на 15 секунд и обзорное видео на веб-сайте ASP.NET. Наконец, похоже, что Microsoft выпустила исходный код для встроенный поставщик членства