2008-11-07 5 views
3

У меня есть приложение, которое должно попасть в ActiveDirectory, чтобы получить разрешения пользователя/роли при запуске приложения и сохраняться повсюду.Сохранение статических пользовательских данных в приложении Windows C#

Я не хочу удалять AD по каждой форме, чтобы перепроверить разрешения пользователя, поэтому я хотел бы, чтобы роль пользователя и, возможно, другие данные на входе пользователя во всемирную доступность были доступны в любой форме в приложении, поэтому я могу правильно скрыть функциональность, кнопки и т. д., когда это необходимо.

Что-то вроде:

if (UserProperties.Role == Roles.Admin) 
{ 
    btnDelete.Visible = false; 
} 

Каковы лучшие практики для хранения статических пользовательских данных в окнах приложения? Такие решения, как Singleton или глобальные переменные, могут работать, но я пытался их избежать.

Является ли объектом пользователя, который передается конгругатору любой формы так же плохо?

ответ

2

Может быть, мое суждение омрачено моим частым использованием JavaScript, но я думаю, что если у вас есть что-то означает быть глобальными , то использование глобальных переменных в порядке.

Глобальный вред, когда вы подвергаете вещи глобально, чего не должно быть. Глобально это нормально, если оно семантически правильно для предполагаемого использования данных.

0

Статические данные (или одиночки), кажется, отлично подходит для этого, если вы хотите, чтобы объем данных в экземпляр приложения (или AppDomain).

Однако, учитывая, что вы говорите о фактическом кэшировании учетных данных безопасности пользователя, вы можете тщательно подумать о лазейках безопасности. Например, что произойдет, если пользователь покинет приложение, работающее в течение нескольких дней? Они могут выполнять операции под их давними учетными данными, а не с их самыми современными полномочиями. В зависимости от того, что вы обеспечиваете, вам может быть лучше проверять учетные данные по требованию или, по крайней мере, периодически истекающие кешированные учетные данные.

 Смежные вопросы

  • Нет связанных вопросов^_^