права пользователя asp.net - PullRequest
0 голосов
/ 21 февраля 2012

Я совершенно сбит с толку по этому поводу, и ни один из вопросов по текстам / документам / SO не объяснил мне этот вопрос.

Я хочу, чтобы мое приложение asp.net MVC могло сохранять документ XML в папку на сервере. Но я получаю исключение ...

Access to the path 'D:\blah\blah\folder\xml_data.xml' is denied.

Итак, насколько я понимаю, мое приложение работает под учетной записью пользователя, у которого нет прав на запись.

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

Но что, если я хочу создать свой собственный набор ролей с соответствующими разрешениями? Должны ли они быть добавлены в IIS? Должен ли я создать список, а затем передать его через веб-хостинг? Как бы выглядел такой список? Насколько я понимаю, невозможно настроить роли и разрешения в web.config, это правильно?

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

пс. Я не хочу использовать членство в asp.net. Хотелось бы узнать, как это настроить самостоятельно.

1 Ответ

1 голос
/ 21 февраля 2012

Используйте членство asp.net. Мне все равно, если вам не нравится это. Используй это. Это легко, это просто, и это получает право безопасности. Вы испортите безопасность, если сделаете это сами и не будете знать, что делаете.

Люди дают членство плохой рэп, это хороший инструмент. Большинство людей просто делают неправильные предположения об этом.

Вы определяете свои роли в API членства / роли. Это хранится в вашей базе данных. Вы не можете иметь роли без пользователя, к которому они могут быть применены, поэтому вам нужна система членства какого-либо типа.

EDIT:

Здесь есть два типа пользователей. Первый - это пользователь, который рабочий процесс ASP.NET запускает как под IIS. Это пользователь, которого ваш хост должен определить и разрешить доступ к различным папкам для доступа к файлам.

Второй - это пользователь IIdentity asp.net, это пользователь, который asp.net определяет для вошедшего в систему веб-пользователя, и он полностью отделен от пользователя рабочего процесса. Пользователи IIdentity не имеют собственных прав или привилегий операционной системы, кроме тех, которые назначены удостоверению рабочего процесса.

Другими словами, пользователи, основанные на IIDentity, работают как один и тот же идентификатор рабочего процесса в IIS.

Исключением является случай, когда вы определяете «impersonate = true» в файле web.config, и это позволяет рабочему процессу «входить» в ОС как рассматриваемый пользователь. Другими словами, рабочий процесс будет выполняться как учетные данные веб-пользователей. Для этого требуется, чтобы у веб-пользователя также были учетные данные в ОС.

Другое исключение заключается в том, что вы можете указать конкретного пользователя ОС для олицетворения в файле web.config. Но, опять же, должен быть пользователь операционной системы, чтобы олицетворять. Кроме того, олицетворение является очень дорогой операцией и требует много системных ресурсов.

См. http://msdn.microsoft.com/en-us/library/aa292118(v=vs.71).aspx

...