powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Управление зарегистрированными пользователями в WEB-проектах созданных с использованием Si
8 сообщений из 8, страница 1 из 1
Управление зарегистрированными пользователями в WEB-проектах созданных с использованием Si
    #37242391
samun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день !
Наверно при создании большинства WEB-проектов, необходимо управление пользователями. Наверно для этого создается группа модераторов, которые будут выполнять операции с
зарегистрированным пользователями
(удалять пользователя, изменять профиль пользователя, и д.р.). Такому модераторов нужен для этого интерфейс ну и DomaneService.
Спросив Google я нашел вот такие подсказки.
Для работы с пользователями, зарегистрированными в текущем WEB-проекте используется база созданная (с использование aspnet_regsql.exe для создания базы данных членства).
В Silverlight Business Application Templat созданы несколько DomaneService: UserRegistrationService.cs AuthenticationService.cs и классы: User.cs и RegistrationData.cs.
И авторы некоторых постов рекомендуют для манипулирования параметрами регистрации пользователя в WEB части изменять класс RegistrationData.cs. и UserRegistrationService.cs:

Вот мне надо было добавить возможность выбора пользователем себе роли:
И я добавил в RegistrationData.cs.
Код: plaintext
1.
2.
3.
[Required(ErrorMessageResourceName = "ValidationErrorRequiredRole", ErrorMessageResourceType = typeof(ValidationErrorResources))]
[Display(Order=7, Name="RoleName", ResourceType = typeof (RegistrationDataResources))]
public string RoleUser { get; set; }
и в UserRegistrationService.cs:
Код: plaintext
Roles.AddUserToRole(user.UserName, user.RoleUser);
И изменил на клиентской стороне окно регистрации нового пользователя.

Так вот некоторые авторы предлагают для дальнейшей работы со списком зарегистрированных пользователей добавлять в UserRegistrationService.cs дополнительные методы вот например
для вывода всех зарегистрированных пользователей добавить в UserRegistrationService.cs метод
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
   public IEnumerable<User> GetUsers()
        {
            var usersDB = System.Web.Security.Membership.GetAllUsers();
            List<User> users = new List<User>();
            foreach (MembershipUser user in usersDB)
            {
                var tempUser = new User();
                tempUser.Name = user.UserName;
                 users.Add(tempUser);
            }
            return users;
        }
Ну и на клиентской стороне:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<Grid x:Name="LayoutRoot">
<riaControls:DomainDataSource AutoLoad="True" LoadedData="userDomainDataSource_LoadedData_1" Name="userDomainDataSource"
 QueryName="GetUsersQuery" >
   <riaControls:DomainDataSource.DomainContext>
      <my:UserRegistrationContext />
    </riaControls:DomainDataSource.DomainContext>
   </riaControls:DomainDataSource>
  <sdk:DataGrid AutoGenerateColumns="False" Height="200"  ItemsSource="{Binding ElementName=userDomainDataSource, Path=Data}" 
Margin="185,116,0,0" Name="userDataGrid" RowDetailsVisibilityMode="VisibleWhenSelected" VerticalAlignment="Top" Width="400">
      <sdk:DataGrid.Columns>
                <sdk:DataGridTextColumn x:Name="nameColumn" Binding="{Binding Path=Name, Mode=OneWay}" Header="Name"
 IsReadOnly="True" Width="SizeToHeader" />
      </sdk:DataGrid.Columns>
     </sdk:DataGrid>
    </Grid>
Вот и собственно что хотел у Вас спросить:
1. Оправдано ли добавление новых методов для работы с учетными данными зарегистрированных пользователей в UserRegistrationService или лучше создать новый DomaneService
2. Рекомендуют для работы с учетными данными зарегистрированных пользователей использовать System.Web.Security.Membership а для работы с профилем ProfileBase так ли это ?
3. Может уже есть наработки в этом направлении, например уже реализован DomaneService модераторов для редактирования учетных данных и профилей зарегистрированных в системе пользователей
...
Рейтинг: 0 / 0
Управление зарегистрированными пользователями в WEB-проектах созданных с использованием Si
    #37242529
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
samun,

1) оправдано, как же управлять тогда пользователями? создавать отдельный DomainService не нужно;
2) да, во всех примерах что я встречал рекомендуют использовать Membership (но если планируется переход на другую БД, то лучше реализовать свою систему хранения и назначения прав пользователей), про ProfileBase ничего не слышал;
3) может быть, но зачем чье-то неизвестно что использовать? напишите свое, это не трудно;

вообще я думаю большая часть вопросов связана с переживанием по поводу "любой пользователь сможет назначить себе права", рекомендую почитать про атрибуты для методов в DomainService, такие как:
автор[RequiresRole("Managers")]
[RequiresAuthentication()]

о том, как включить Роли
...
Рейтинг: 0 / 0
Управление зарегистрированными пользователями в WEB-проектах созданных с использованием Si
    #37242927
samun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
уТКа,

Роли уже включены и активно пользую. про атрибуты уже почитал и пользую.
а вот по поводу профиля пользователя вопрос. как управлять профилем пользователя? в инете нашел вот такое (Реализация на стороне WEB)
Для добавления полей свойств профиля были вписаны в Web.config следующие строки
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<profile defaultProvider="AspNetSqlProfileProvider">
      <providers>
        <clear />
        <add name="SqlProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices"
 applicationName="SampleApplication" description="SqlProfileProvider for SampleApplication" />
        <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" 
applicationName="/" />
      </providers>
      <properties>
        <add name="UserId" type="System.Guid"/>
        <add name="FirstName" type="String" customProviderData="FirstName;varchar;50" />
        <add name="LastName" type="String" customProviderData="LastName;varchar;50" />
        <add name="FriendlyName" type="String" customProviderData="FriendlyName;varchar;50" />
        <add name="PhoneNumber"  type="String" customProviderData="FirstName;varchar;50" />
      </properties>
    </profile>
В класс User.cs добавлены поля
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
[DataMember]
        public System.Guid UserId { get; set; }

        [DataMember]
        public String FirstName { get; set; }

        [DataMember]
        public String LastName { get; set; }
             
        [DataMember]
        public string PhoneNumber { get; set; }

        [DataMember]
        public string FriendlyName { get; set; }

на стороне сервера:
для записи в профиль использовалась следующая конструкция
Код: plaintext
1.
2.
3.
4.
5.
ProfileBase proff = ProfileBase.Create(HttpContext.Current.User.Identity.Name);
//Или
//ProfileBase proff = ProfileBase.Create(this.ServiceContext.User.Identity.Name);

proff.SetPropertyValue("<имя поля например LastName > ", "значение");
proff.Save();

для чтения поля профиля
Код: plaintext
1.
2.
3.
4.
ProfileBase proff = ProfileBase.Create(HttpContext.Current.User.Identity.Name);
//Или
//ProfileBase proff = ProfileBase.Create(this.ServiceContext.User.Identity.Name);

var Last = proff.GetPropertyValue("<имя поля например: LastName > ");
...
Рейтинг: 0 / 0
Управление зарегистрированными пользователями в WEB-проектах созданных с использованием Si
    #37243023
Calabonga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
samun,

Когда пришло время в рабочие приложение добавить поддержку аутентификации и авторизации первым делом я увидел RIA-сервисы. Пользовал не долго, ибо были они разработчиками "абыкакбы". При полноценную работу с профилями пришлось вынести на сторону ASP.NET.

После некоторых непродолжительных поисков нашел то, что нужно именно для Silvelight:
- ApplicationServices - пространство
- Практическое руководство. Включение службы проверки подлинности WCF
- Статья как пример применения

Внешний вид приложения, использующий роли для построения интерфейса (картинки из статьи).

Так выглядит silverlight-страница, которую открыл неавторизованный пользователь.



Так выглядит silverlight-страница, которую открыл авторизованный пользовательс правами "Manager".


Так выглядит silverlight-страница, которую открыл авторизованный пользователь с правами "Administrator".


P.S.: Использовать скудную реализацию аутентификации и авторизации от RIA-сервисов или всё-таки используя WCF-сервисы от MS сугубо личные предпочтения. Мне было проще написать классы по работе с WCF-сервисами в такой мере как требовало моё приложение. Теперь все мои приложения используют эту библиотечку. Если Ваш выбор падёт в сторону RIA, могу только предупредить, что подводных камней Вы встретите больше, чем кажется на первый взгляд.
...
Рейтинг: 0 / 0
Управление зарегистрированными пользователями в WEB-проектах созданных с использованием Si
    #37244179
samun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Calabonga,

Пока у меня есть возможность изучать silverlight business application, буду изучать возможности аутентификации, авторизации и управления профилем, от RIA Services.
на слое WEB для работы с профилем есть вот такая конструкция (если есть вариант удобнее то подскажите пожалуйста)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
ProfileBase proff = ProfileBase.Create(HttpContext.Current.User.Identity.Name);
//для записи в профиль пользователя
proff.SetPropertyValue("<имя поля например LastName > ", "значение");
proff.Save();
//и для чтения 
var valueProf =proff.GetPropertyValue("<им свойства профиля>");


на слое представления (Silverlight Clients) вот такая:
Код: plaintext
1.
2.
3.
WebContext.Current.User.FirstName = "asadad";
WebContext.Current.Authentication.SaveUser(false);
 string str = WebContext.Current.User.FirstName;
...
Рейтинг: 0 / 0
Управление зарегистрированными пользователями в WEB-проектах созданных с использованием Si
    #37244476
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
CalabongaP.S.: Использовать скудную реализацию аутентификации и авторизации от RIA-сервисов или всё-таки используя WCF-сервисы от MS сугубо личные предпочтения. Мне было проще написать классы по работе с WCF-сервисами в такой мере как требовало моё приложение. Теперь все мои приложения используют эту библиотечку. Если Ваш выбор падёт в сторону RIA, могу только предупредить, что подводных камней Вы встретите больше, чем кажется на первый взгляд.
У подобного подхода тоже есть небольшой подводный камушек, который сводит всю эту затею на нет, если потребуется добавить еще группу в список
...
Рейтинг: 0 / 0
Управление зарегистрированными пользователями в WEB-проектах созданных с использованием Si
    #37244608
Calabonga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
i,

Группу чего? Можно узнать подробнее о чем речь?
...
Рейтинг: 0 / 0
Управление зарегистрированными пользователями в WEB-проектах созданных с использованием Si
    #37246839
samun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
тема открыта. т.к. я думаю что в WEB слое должен более удобный способ работы с профилем пользователя.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Управление зарегистрированными пользователями в WEB-проектах созданных с использованием Si
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]