Я создал веб-приложение, которое использует Microsoft AzMan, и оно отлично работает, пока у вас не будет нескольких пользователей. Я почти на 100% уверен, что AzMan кэширует один и тот же материал для нескольких пользователей.Как обновить кеш проверки доступа AzMan?
Чтобы упростить это, проблема, которую я вижу, - это то, что пользователь A переходит на сайт и имеет полный доступ, пользователю предоставляется правильный доступ и он может работать нормально. Затем пользователь B переходит на сайт, имеет только доступ к виду, но поскольку AzMan уже видел полный доступ пользователя A, он также предоставляет полный доступ к пользователю B.
Я использую метод AddStringSids при создании клиентского контекста, потому что это единственный метод, который будет работать для каждой ситуации. Есть ли проблема с этим? Раньше у нас не было этой проблемы, когда мы создавали клиентские контексты из токена.
Ниже приведен точный код, который я использую для создания контекста. app - это переменная IAzApplication2, а ClientContext.SID - это SecurityIdentifier для данного пользователя.
IAzClientContext2 cctx = app.InitializeClientContext2("AppNameHere", null);
cctx.AddStringSids(new object[] { (object)ClientContext.SID.ToString() } as object);
EDIT: Я не использую поставщика роли ASP.Net вообще, поскольку для этого потребуется, чтобы приложение было осведомлено о ролях. Я использую только COM API.
EDIT 2: Кроме того, если пользователь B вошел в систему первым, тогда пользователь A не имеет доступа при входе в систему. Таким образом, он не просто поддерживает высокий уровень доступа.