Я тоже боролся.
Я пытался выполнить свою аутентификацию и авторизацию в службе WCF с использованием стандартных поставщиков членства и ролей ASP.Net.
Я хотел передать учетные данные и «запрошенное приложение», чтобы определить, «аутентифицирован» ли пользователь для этого приложения. (не приложение ASP.Net, а приложение в моей собственной базе данных).
Для этого я хотел получить доступ к ролям, но не хотел «перенаправлять» или делать второй вызов моей службе WCF.
Вот код, который работает для меня:
Сначала я определяю, является ли пользователь действительным, следующим образом:
if (Membership.ValidateUser(CompanyCn, CompanyPwd))
{
sbLogText.AppendFormat("\r\n\r\n\tValid User UID/PWD: '{0}'/'{1}'", CompanyCn, CompanyPwd);
FormsAuthentication.SetAuthCookie(CompanyCn, false);
}
Тогда следующий код прекрасно работает для получения списка ролей:
List<string> roleList = new List<string>(Roles.GetRolesForUser(CompanyCn));
sbLogText.AppendFormat("\r\n\r\n\tUser ('{0}'): Roles ({1}):", CompanyCn, roleList.Count);
foreach (string s in roleList)
sbLogText.AppendFormat("\r\n\t\tRole: {0}", s);