2014-01-10 3 views
1

В моей программе у меня есть опция, позволяющая администраторам добавлять новые роли в базу данных. Это, конечно, использует CreateRole метод из System.Web.Security.Roles:Добавить новую роль в SiteMap

Roles.CreateRole(newRoleName); 

Теперь я задаюсь вопросом, можно ли изменить мой SiteMap во время выполнения, таким образом, что новая роль может быть добавлена ​​к список roles в данном siteMapNode? Например:

<siteMapNode title="Admin Tools" roles="Admin" description=""> 

, если я где вставить новую роль под названием sampleRole, то SiteMapNode должен выглядеть следующим образом:

<siteMapNode title="Admin Tools" roles="Admin,sampleRole" description=""> 

как следует мой код за взгляд?

ответ

1

Есть несколько причин, чтобы не изменить файл (хотя это может быть возможно):

  • Файл, скорее всего, находится в каталоге приложения вашего приложения. Если вы измените файл в этом каталоге (например, web.config), IIS перезапустит приложение, чтобы другие пользователи могли столкнуться с перерывами.
  • Также SiteMapProvider может кэшировать содержимое файла по соображениям производительности, чтобы ваши изменения не отражались.
  • По соображениям безопасности учетная запись пула приложений не должна изменять файлы на веб-сервере.

Существует одна альтернатива: создать пользовательский SiteMapProvider, который определяет роли узлов так, чтобы он соответствовал вашим требованиям. См. Это link для деталей.

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