Я пишу веб-сайт ASP, который использует защиту форм и Active Directory.WindowsIdentity.Impersonate и PostBack issue
Я позволяет пользователю войти в систему с помощью API Windows:
[DllImport("advapi32.dll", SetLastError = true)]
public static extern bool LogonUser(string pszUsername, string pszDomain, string pszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken);
Это дает мне Войти Токен Pointer, который я не копить в переменной сеанса:
Теперь, когда я попадаю Вернемся к моей странице Default.aspx. Я хочу олицетворять пользователя, который вошел в систему. Таким образом, мне не нужно жестко кодировать имя пользователя строки подключения SQL, я могу просто использовать интегрированную защиту. Я делаю это на загрузки страницы следующим образом:
if (Session["TokenHandle"] != null)
{
IntPtr tokenHandle = new IntPtr(0);
tokenHandle = (IntPtr)Session["TokenHandle"];
WindowsIdentity.Impersonate(tokenHandle);
}
Вот проблема:
Это все прекрасно работает первый раз, когда я ударил Default.aspx, однако, как только я постбэк его теряет олицетворение, и я получаю ошибку:
Ошибка входа для пользователя 'NT AUTHORITY \ ANONYMOUS LOGON'.
Теперь я знаю, что этот код должен работать, я использовал его в другом проекте. Я просто что-то пропустил.
Также я использую компонент DevExpress.Web.ASPxGridView.v9.2, я не уверен, имеет ли он какое-либо отношение к нему.
Пожалуйста, помогите.
Я не уверен, что это он. Если я удалю все компоненты DevExpress и заменим их на обычные компоненты ASP.NET (gridview), все будет работать. Его DevExpress, который вызывает его. –