0 / 0 / 0
Регистрация: 21.01.2015
Сообщений: 13

Авторизация в клиентском приложении

05.04.2015, 19:42. Показов 4034. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! В общем, проблема заключается в следующем: есть База Данных, в ней есть таблицы, ХП, представления, и т.д, создал 3-и пользователя, и назначил им права доступа, есть приложение С#, для работы с этой БД, технология ADO.NET, встал вопрос авторизации пользователей, я создал форму авторизации(Введите логин и пароль), и кнопку войти, и описал все след образом:

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
50
51
52
53
  public partial class autorizaciya : Form
    {
 
    public autorizaciya()
        {
            InitializeComponent();
 
 
            if (checkBox1.Checked == false)
            {
                textBox2.UseSystemPasswordChar = true;
               
            }
            if (checkBox1.Checked == true)
            {
                textBox2.UseSystemPasswordChar = false;
            }
           
        }
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                string login = "";
                string pass = "";
                login = textBox1.Text;
                pass = textBox2.Text;
 
                var secureString = new SecureString();
                for (int i = 0; i < pass.Length; i++)
                {
                    secureString.AppendChar(pass[i]);
                }
 
                secureString.MakeReadOnly();
                var cred = new SqlCredential(login, secureString);
                using (var conn = new SqlConnection(@"Data Source=ADMIN-PC\SQLEXPRESS;Initial Catalog=дима;", cred))
                {
                    conn.Open();
                    MessageBox.Show("Подключение прошло успешно!");
                    this.Hide();
                    vybor tb_vybor = new vybor();
                    tb_vybor.ShowDialog();
                    this.Close();  
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Ошибка при подключении к SQL-серверу :" + ex.Message);
            }
 
        }
    }
Все вроде как работает, авторизация проходит успешно под всеми тремя пользователями, но дело в том что все они имеют разные права в БД, и только один может делать любые действия с таблицами и ХП, а два остальных могут лишь просматривать таблицы, а это почему-то не происходит! Авторизировавшись под любым из пользователей я могу удалять, изменять, добавлять и.т.д!

Добавлено через 2 минуты
И еще вопрос, почему не работает вот эта часть кода
C#
1
2
3
4
5
6
7
8
9
            if (checkBox1.Checked == false)
            {
                textBox2.UseSystemPasswordChar = true;
               
            }
            if (checkBox1.Checked == true)
            {
                textBox2.UseSystemPasswordChar = false;
            }
По идее она должна, при выборе флажка, показывать пароль, иначе нет, но она либо показывает пороль в любом случае, либо меняет все символы на *?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.04.2015, 19:42
Ответы с готовыми решениями:

Удаление из БД в клиентском приложении
Добрый вечер. Есть такая проблема. Есть база данных с которой я работаю из приложения. В ней несколько таблиц. Проблема: Есть...

Организация данных и связей в клиентском приложении WinForms
При работе над клиентским приложением возникли некоторые трудности с пониманием как реализовать данные в большом приложении. ...

Авторизация в приложении
Есть таблица в БД CREATE TABLE . ( INT NOT NULL, NVARCHAR(50) NULL, NVARCHAR(50) NULL, INT...

9
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
05.04.2015, 20:43
Цитата Сообщение от smaildz95 Посмотреть сообщение
все они имеют разные права в БД
Каким образом это реализовано?
0
0 / 0 / 0
Регистрация: 21.01.2015
Сообщений: 13
05.04.2015, 21:27  [ТС]
Это реализовано скриптом TSQL тип:
на таблицы:
SQL
1
2
GRANT INSERT, DELETE, UPDATE, SELECT  ON object::Услуги TO Менеджер;
GO
на ХП:
SQL
1
GRANT EXECUTE ON object::[Вывод_информации_о_заказчиках_по_номеру_заказчика] TO Менеджер;
Если авторизироваться в самом SQL Servere под конкретным пользователем, то все работает, права которые я назначил соответствую!
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
05.04.2015, 21:46
Цитата Сообщение от smaildz95 Посмотреть сообщение
реализовано скриптом TSQL
Хм... Не слишком я силен в скриптах T-SQL, сказать по правде...
Я бы пошел другим путем - сделал бы булевское поле, которое передавал бы в класс для работы с бд. А вво внешнем коде в зависимости от того, кто авторизовался, ставил бы его в true или false.
Это вариант-1.
Второй вариант - дополнительное поле уже в самой таблице.
0
0 / 0 / 0
Регистрация: 21.01.2015
Сообщений: 13
05.04.2015, 22:13  [ТС]
Можно это что вы сказали кодом описать если не сложно? а то я что-то понять не могу что вы имеете в виду?
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
06.04.2015, 05:27
Цитата Сообщение от smaildz95 Посмотреть сообщение
дело в том что все они имеют разные права в БД, и только один может делать любые действия с таблицами и ХП, а два остальных могут лишь просматривать таблицы, а это почему-то не происходит! Авторизировавшись под любым из пользователей я могу удалять, изменять, добавлять и.т.д!
Такое в принципе невозможно. В смысле, если у пользователя нет прав на внесении изменений в таблицу, то SQL Server не даст этого сделать - вывалится исклчюение, в тексте которого будет написано об отсутвии прав. Следовательно, у вас на всех таблицах есть все права на все объекты БД. Перепроверьте из Management Studio.
0
0 / 0 / 0
Регистрация: 21.01.2015
Сообщений: 13
06.04.2015, 09:13  [ТС]
Все проверил, и так как я и говорил, в SQL Servere все работает вот что он выдает при попытке добавления, если пользователь не имеет прав: (Может быть я не правильно как то авторизуюсь?)
Миниатюры
Авторизация в клиентском приложении  
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
06.04.2015, 09:23
smaildz95, все верно. Так и должно быть. SQL Server вам не разрешает добавлять данные. Что вы тогда имели ввиду, когда говорили, что этот пользователь имеет права на добавление?
0
0 / 0 / 0
Регистрация: 21.01.2015
Сообщений: 13
06.04.2015, 12:15  [ТС]
Смотрите, есть три пользователя, Менеджер, клиент, и директор, Менеджер имеет все права в БД, подключившись, под его логином в SQL Server все работает я могу добавить изменить удалить запись! Подключившись по Клиентом и директором, при попытке добавления, удалиения и обнавления, Server выдает ошибку как на скриншоте, все так и надо, но когда я все это пытаюсь делать в самом приложении, то авторизировавшись под любым из пользователей, я могу выполнять любые действия!
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
06.04.2015, 12:26
smaildz95, MS SQL Server отвечает за права доступа только к своим объектам. Как вы убедились, он это делает исправно. На всякие DataGridView, DataSet и прочие объекты .NET нельзя раздать права в SQL Server. Права доступа к этим элементам вам нужно регулировать в среде, в которой вы их создаете - C#.NET. Либо ловить получаемое из SQL Server'а исклчюение и сообщать пользователю постфактум, что у него нет прав на эти действия.
PS: Для того, чтобы из приложение проверить права пользователя, можно использовать функцию TRANSACT-SQL PERMISSIONS.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.04.2015, 12:26
Помогаю со студенческими работами здесь

Авторизация/аутентификация в приложении с БД MS SQL
Как можно более удобно сделать процесс авторизации с труднейшим способом ее взлома. Если писать в коде - код легко доступен - взлом легкий....

Авторизация в клиентском приложении
Доброго времени суток. Возник такой вопрос, никак не могу найти в нете... Нужно создать приложение с авторизацией. То есть при запуску...

Отчет в клиентском приложении
Есть готовая и работающее клиентское приложение в нем 2 отчета 1 в Exel он работает прекрасно. 2-ой в ворде и вот он не хочет добавлять...

Как создать авторизацию MS SQL Server в клиентском приложении на MS Access?
Есть БД на SQL Server с клиентской частью на Access. Вот и существует проблема с авторизацией. На данный момент использую вариант с защитой...

Авторизация в приложении
Здравствуйте. Создаю самостоятельно приложение на Java Хочу, чтобы пользователя при запуске приложения авторизовывался, логин и пароль, в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru