powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Silverlight соединение с БД с аутентификацией
12 сообщений из 37, страница 2 из 2
Silverlight соединение с БД с аутентификацией
    #37989254
Mans7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хм.. Ну, я не сообразил как написать свои провайдеры мембершипа и ролей, однако я каким-то образом смог нужным образом подчинить встроенные. И мне этого более чем достаточно на данный момент.

В итоге я решил не придумывать велосипед (к счастью, это реально не потребовалось, в отличии от сервиса аутентификации - но, благодаря ЗОЛОТОМУ примеру кастомного сервиса, я получил практически ВСЁ что я хотел - просто не сразу это понял).

Однако, используя мою нынешнюю модель, я столкнулся со следующей проблемой. Не получается добавить поля/свойства класса User таким образом, чтобы я мог использовать их и видеть из клиентской части. Пока что из клиента я могу видеть только те поля, которые есть в таблице БД. Класс выглядит так (может, WPF, ты мог бы помочь мне, пожалуйста?):

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel.DomainServices.EntityFramework;
using System.ServiceModel.DomainServices.Hosting;
using System.ServiceModel.DomainServices.Server;
using System.ServiceModel.DomainServices.Server.ApplicationServices;
using System.Web.Security;

namespace SilverlightApplication5.Web
{
    [EnableClientAccess]
    public class AuthenticationService : LinqToEntitiesDomainService<MMDatabaseEntities>, IAuthentication<User>
    {
        private static readonly User DefaultUser = new User
        {
            ISN = 0,
            Name = string.Empty,
            Password = string.Empty,
            DbRoles = string.Empty,
            Comment = string.Empty, //именно такие столбцы в таблице
        };

        public User Login(string userName, string password, bool isPersistent, string customData)
        {
            if (ValidateUser(userName, password))
            {
                FormsAuthentication.SetAuthCookie(userName, isPersistent);
                return GetUser(userName);
            }
            return null;
        }
 
        //логика авторизации, валидации, гетюзерс...
    }

    public partial class User : IUser
    {
        [DataMember]
        public IEnumerable<string> Roles
        {
            get { return DbRoles.Split(','); }
            set { DbRoles = string.Join(",", value.ToArray()); }
        }
        
        public string MyTextInfo { get; set; }
    }
}


Даже не спрашивай, почему он выглядит ИМЕННО ТАК - это шаблончик, который я под себя подстроил. Собственно всё. Этот класс реализует класс авторизации, валидации, доступа к данным а так же класс User, к которому я получаю доступ в клиенте через WebContext.Current.User. Однако свойство MyTextInfo в клиентской части недоступно. Помогите, пожалуйста, разобраться с этим.

Потом мне останется научиться пользоваться профилями, и, пожалуй, самый минимальный набор ф-ий я получил и буду уже меньше здесь доставать всех глупыми вопросами. Надеюсь.
...
Рейтинг: 0 / 0
Silverlight соединение с БД с аутентификацией
    #37989317
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет необходимых атрибутов сериализации
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
[DataContract]
public partial class User : IUser
    {
        [DataMember]
        public IEnumerable<string> Roles
        {
            get { return DbRoles.Split(','); }
            set { DbRoles = string.Join(",", value.ToArray()); }
        }
        
         [DataMember]
        public string MyTextInfo { get; set; }
    }



Overview of Serialization in Silverlight
...
Рейтинг: 0 / 0
Silverlight соединение с БД с аутентификацией
    #37991349
Фотография @k@DElpher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я, пожалуй, приложу картинку для ясности.
В начале топик стартер явно мыслит "двухзвенкой", где приложение имеет прямое подключение к базе.
Это не шибко хорошая практика, когда приложению вдруг приходится выйти из интрасети в Интернет.
PS
В картинке изначально Security Token Service был и еще довес вокруг и внутри.
Из нее еще MVVM и модульность убрать. И MS SQL с EF заменить на "Хранилище" и "Доступ к данным" соответственно - будет совсем обобщенно.
PS2
Если у кого-то будут замечания, рад буду выслушать)
...
Рейтинг: 0 / 0
Silverlight соединение с БД с аутентификацией
    #37992429
pshik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
@k@DElpherЕсли у кого-то будут замечания, рад буду выслушать)

Ну я бы добавил ещё один уровень-DAL.
Который бы позволял иметь доступ к разным базам данных.
Т.е ваша Бизнес-логика через него разговаривает с данными.
...
Рейтинг: 0 / 0
Silverlight соединение с БД с аутентификацией
    #37992583
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pshik,

EF не хватит для этого?
...
Рейтинг: 0 / 0
Silverlight соединение с БД с аутентификацией
    #37992768
Mans7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извиняюсь что пропал - дела были.

SeVa , спасибо большое - с атрибутами всё заработало!

@k@DElpherВ начале топик стартер явно мыслит "двухзвенкой", где приложение имеет прямое подключение к базе.
Это не шибко хорошая практика, когда приложению вдруг приходится выйти из интрасети в Интернет.
Хорошо, @k@DElpher , скорее всего, я делаю не особо рационально. Тогда, подскажите, пожалуйста как сделали бы вы? Желательно с подробностями :). Или в картинке отражены уже Ваши предпочтения?

pshikНу я бы добавил ещё один уровень-DAL.
Который бы позволял иметь доступ к разным базам данных.
Так ведь можно парочку Entity Framework сделать для связей с разными базами данных. Объясните, пожалуйста, лично мне, Вашу мысль.

Кстати спасибо большое за продолжение помощи :)
В данный момент я реализовал почти всё что хотел - осталось только оттачивать то что есть и, может быть, заменять чем-нибудь. Но, я теперь, хоть что-то имею.

Кстати, а возможно ли было бы обращение пользователя (в частности того, который по логике имеет админские права) в настройки веб приложения для изменения, скажем, времени таймаута на авторизацию?
...
Рейтинг: 0 / 0
Silverlight соединение с БД с аутентификацией
    #37992791
Mans7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И ещё возник вопрос, который не удалось решить... вроде всё настолько тупо и просто... а не работает...
Делаю ТУПО по примеру: http://blogs.msdn.com/b/brada/archive/2010/03/26/silverlight-4-ria-services-ready-for-business-authentication-and-personalization.aspx (поиском находим строчку "First we need to add BackgroundColor to our backing store. I this case I am using ASP.NET profile storage, so I add the right stuff to web.config" - с неё и начинается моя работа).

1. Прописываю профиль с один параметр в конфигурации серверной части. Прописываю значение по-умолчанию.
Код: xml
1.
2.
3.
4.
5.
    <profile enabled="true">
      <properties>
        <add name="BackgroundColor" defaultValue="red"/>
      </properties>
    </profile>


2. Прописываю в классе User одноимённое свойство (пробовал и с и без атрибута [DataMember])
3. Биндю на фон грида, а так же брейкер ставлю на момент сразу_после_аутентификации. И значение равно null. Даже не смотря на то, что я указывал значение по-умолчанию.

Это нормально? Или опять я торможу? Ну куда уж проще. А не работает...
...
Рейтинг: 0 / 0
Silverlight соединение с БД с аутентификацией
    #37992839
pshik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch
EF не хватит для этого?

Предположим вы меняете с SQL на ORacle.
Ваши шаги?
...
Рейтинг: 0 / 0
Silverlight соединение с БД с аутентификацией
    #37992842
pshik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mans7Так ведь можно парочку Entity Framework сделать для связей с разными базами данных. Объясните, пожалуйста, лично мне, Вашу мысль.


Ну тогда вы всё засунете в бизнес логику...практически два раза напишите код.
А так логика не изменна, меняете лишь код доступа к базе и всё.
Если надо ещё к 3-й базе, то дописываете DAL, указываете новую DLL и всё.

Писать не сложно...сложно поддерживать и изменять существующий код.
А если новая команда?
Разобраться в DAL проще, чем лопатить весь ваш код в бизнес логике

Я подразумеваю, что каждый уровень-это отдельная DLL.
...
Рейтинг: 0 / 0
Silverlight соединение с БД с аутентификацией
    #37992866
Mans7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pshik , мысль, несомненно, заслуживает внимания, и я обязательно позже изучу этот вопрос - как минимум что бы знать. Ну и попробую реализовать как минимум что бы уметь. А, раз вы указываете на такие плюсы, то, может быть и перейду на эту систему. Но на текущий момент время горит - мне необходимо создать проект с хоть какой-то логикой. Главное что бы работало. А чуть позже можно и на SSL перепрыгнуть, на DAL. Спасибо большое за информацию!

Подскажите мне, пожалуйста, по поводу профилей что я делаю не так?
...
Рейтинг: 0 / 0
Silverlight соединение с БД с аутентификацией
    #37992893
Фотография @k@DElpher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mans7Хорошо, @k@DElpher, скорее всего, я делаю не особо рационально. Тогда, подскажите, пожалуйста как сделали бы вы? Желательно с подробностями :). Или в картинке отражены уже Ваши предпочтения?

Mans7pshik, мысль, несомненно, заслуживает внимания, и я обязательно позже изучу этот вопрос - как минимум что бы знать.
Да вы шибко не обращайте внимание. Сейчас это может перевести топик на философскую тему. Я немного зря со своей картинкой полез, просто она вроде как в тему, но может вызвать бурление двузвенщиков). Странно, что тут еще не 100 сообщений.
---
Просто этому лично нас не учили в ВУЗе. База данных и клиент - ничего больше не существует. Поэтому я предполагаю, что почти везде так (хотя даже у нас были кафедры с исключениями).
Эта картинка поясняет даже не как надо, а как оно устроено в Silverlight по умолчанию. Когда вы создаете проект сразу появляется уровень клиента, уровень сервисов, а базу уже делают в сервисах. Хотя есть возможность напрямую к базе обратиться:)
---
Прежде чем реализовывать все эти слои, советую:
Microsoft Application Architecture Guide, 2nd Edition
То же, но На русском
Она в PDF бесплатно Microsoft предоставляется.
PS
Там еще окажется, что "уровни" и "слои" - разные понятия:)
Поэтому Data Access Layer на моей схеме нужен только, как комментарий:) Хотя согласен, она смешанная.
...
Рейтинг: 0 / 0
Silverlight соединение с БД с аутентификацией
    #37993760
Mans7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
@k@DElpherХотя есть возможность напрямую к базе обратиться:)
Как же я был удивлён когда увидел этот Entity Framework - теперь sqlconnection никому не нужен будет :D

А картинка лично мне очень будет полезна! И, спасибо большое за ссылки на материал - очень и очень познавательно для человека, который только начал работать с бизнес-приложениями.

Так где я в профилях косячу? :D
...
Рейтинг: 0 / 0
12 сообщений из 37, страница 2 из 2
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Silverlight соединение с БД с аутентификацией
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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