Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/75: Рейтинг темы: голосов - 75, средняя оценка - 4.87
5 / 5 / 2
Регистрация: 09.12.2016
Сообщений: 54
.NET 4.x

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

23.12.2016, 16:00. Показов 15424. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Каким образом можно реализовать авторизацию для приложения, таким образом, чтобы заходя под одним пользователем был доступ исключительно на чтение, а под другим уже собственно полный доступ (возможность редактирования, добавления и прочее).
Используется подключение к MSSQL (+DataSet, SqlDataAdapter, BindingSource, DataGridView). Возможно ли это сделать без использования авторизации в сам MSSQL, а просто как "поверх" окно, с авторизацией в самом приложении (где, грубо говоря, если уровень доступ на чтение - просто будут блокироваться кнопки добавления/изменения информации, а с полным доступом - просто полноценно рабочее приложение)?
Спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.12.2016, 16:00
Ответы с готовыми решениями:

Авторизация в приложении
Приложение подключено к БД и в зависимости от прав пользователя открывает ту или иную форму. Но на этом моя программа заступорилась. ...

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

Авторизация пользователя в приложении
Помогите пожалуйста. Нужна программа в C# доступа к программе в виде логина и пароля. Что бы логин и пароль хранился либо в Б/Д или файле....

13
5 / 5 / 2
Регистрация: 09.12.2016
Сообщений: 54
09.01.2017, 11:12  [ТС]
Кто-нибудь подскажет?
0
.NET senior
 Аватар для bax_tang
441 / 359 / 137
Регистрация: 23.09.2016
Сообщений: 980
09.01.2017, 11:18
gmaksim, добавляете в БД таблицу, в которой хранится информация о пользователях (идентификатор, логин/пароль), и связанную таблицу, в которой хранится информация о том, какие права имеет тот или иной пользователь.

Пользователь "авторизуется" на уровне приложения - становится известен его ID - становится доступной информация о его правах (только чтение / чтение и запись) - в зависимости от этого меняется интерфейс приложения.
1
5 / 5 / 2
Регистрация: 09.12.2016
Сообщений: 54
09.01.2017, 13:49  [ТС]
bax_tang, сможете подсказать пример кода / ссылку на MSDN, как это можно реализовать? Смысл задачи понимаю, но в какую сторону посмотреть, увы, нет.
0
.NET senior
 Аватар для bax_tang
441 / 359 / 137
Регистрация: 23.09.2016
Сообщений: 980
09.01.2017, 14:17
gmaksim, навскидку пример кода не напишу, так как задача не на пять минут; во вложении - примерная схема БД, от которой можно оттолкнуться.

Соответственно, после авторизации пользователя становится известен его UserID, относительно которого можно глобально выдавать права на чтение/редактирование/удаление записей во всех прочих таблицах БД (по факту в Вашем случае - соотвествующим образом изменять интерфейс приложения).
Миниатюры
Авторизация в приложении  
1
5 / 5 / 2
Регистрация: 09.12.2016
Сообщений: 54
27.01.2017, 13:35  [ТС]
Цитата Сообщение от bax_tang Посмотреть сообщение
Соответственно, после авторизации пользователя становится известен его UserID
Вот как примерно выглядит этот самый "код авторизации" я не пойму? Возможно какой-либо встроенный функционал языка позволяет это осуществить?
0
5 / 5 / 2
Регистрация: 09.12.2016
Сообщений: 54
31.01.2017, 15:54  [ТС]
Разобрался.
Создаем отдельную форму для авторизации, добавляем два "текстбока" и одну кнопку, к которой привяжем auth_proc:
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
        private void auth_proc(object sender, EventArgs e)
        {
 
            Program.connection = @"Data Source=.\INST;Initial Catalog=DB;User Id=" + textBox1.Text + ";Password=" + textBox2.Text + ";";
 
            int j = 1;
            try
            {
               
                SqlConnection connection = new SqlConnection(Program.connection);
                connection.Open();
                j++;
                connection.Close();
             
            }
            catch
            {
                MessageBox.Show("Неверные параметры подключения");
            }
            if (j != 1)
            {
                Form1 fm2 = new Form1(); //указываем какую форму открыть после авторизации
                fm2.Show();
                this.Hide();
            }
        }
Далее, в Program.cs вносим следующие изменения:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
    static class Program
    {
        public static string connection; //добавили переменную connection
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new AuthForm()); //меняем на ту форму, которая должна запускаться первой (которую создали)
   
            
        }
    }
Затем на любой другой дополнительной/основной форме вы можете просто использовать "Program.connection".
Пример:
C#
1
adapterExample= new SqlDataAdapter("SELECT * FROM TableExample", Program.connection);
1
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
01.02.2017, 17:25
Недавно делал лабу на заказ как раз по теме авторизации пользователей в приложении. Там, правда, весь код оказался в методичке и его оставалось лишь в проект перенести. Если интересно, выкладываю данную методичку
0
0 / 0 / 0
Регистрация: 24.04.2016
Сообщений: 8
01.02.2017, 21:01
gmaksim, можешь подробнее описать подключение к БД? Ты ее как привязывал к приложению?

Добавлено через 1 минуту
можешь подробнее описать подключение к БД? Ты ее как привязывал к приложению?
0
5 / 5 / 2
Регистрация: 09.12.2016
Сообщений: 54
01.02.2017, 22:01  [ТС]
Цитата Сообщение от Shogun31337 Посмотреть сообщение
Недавно делал лабу на заказ как раз по теме авторизации пользователей в приложении. Там, правда, весь код оказался в методичке и его оставалось лишь в проект перенести. Если интересно, выкладываю данную методичку
Круто! Как вариант локальной авторизации очень здорово объяснено (на мой взгляд новичка), сохранил.
Цитата Сообщение от Kwich Посмотреть сообщение
можешь подробнее описать подключение к БД? Ты ее как привязывал к приложению?
Конечно. Все подключение в строке Program.connection.
C#
1
2
3
4
5
private void auth_proc(object sender, EventArgs e)
{
 Program.connection = @"Data Source=.\INST;Initial Catalog=DB;User Id=" + textBox1.Text + ";Password=" + textBox2.Text + ";";
...
}
В данном случае используется MS SQL. Вместо INST необходимо указывать свой инстанс (при условии, что MS SQL установлен на локальной машине, а не удаленно), по умолчанию зачастую это SQLEXPRESS. Вместо DB - название базы данных (тут как сами назвали ) в данном инстансе. Собственно все - далее уже при запуске формы необходимо ввести логин и пароль, которые вы создали в самом MS SQL.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
02.02.2017, 20:10
gmaksim, для смены интерфейса удобнее делать не несколько (туеву хучу) форм, а использовать набор UserControl-ов, с настроенными элементами управления в них.
0
5 / 5 / 2
Регистрация: 09.12.2016
Сообщений: 54
02.02.2017, 21:20  [ТС]
Цитата Сообщение от insite2012 Посмотреть сообщение
gmaksim, для смены интерфейса удобнее делать не несколько (туеву хучу) форм, а использовать набор UserControl-ов, с настроенными элементами управления в них.
Вполне возможно. Но к сожалению мой текущий уровень понимания/знания C# далек от этого, в дальнейшем буду изучать, попробую применить.
Если вы в легкой и доступной форме сможете раскрыть тему - буду только рад .
0
 Аватар для Павлик Морозов
138 / 137 / 42
Регистрация: 26.10.2012
Сообщений: 443
03.02.2017, 00:17
gmaksim, создание толковых юзерконтролов - это кропотливый труд и много аспектов надо учитывать... ведь с Вашими компонентами потом будут работать другие программисты. Лучшее, и наверно единственное на русском языке, издание: Павел Агуров C#. Разработка компонентов в MS Visual Studio. Книга старая, но актуальная до сих пор, если работаете на WinForms.

Не по теме:

Будь все так просто, DevExpress не стоил бы тех сумасшедших денег

1
5 / 5 / 2
Регистрация: 09.12.2016
Сообщений: 54
03.02.2017, 13:45  [ТС]
Цитата Сообщение от Павлик Морозов Посмотреть сообщение
gmaksim, создание толковых юзерконтролов - это кропотливый труд и много аспектов надо учитывать... ведь с Вашими компонентами потом будут работать другие программисты. Лучшее, и наверно единственное на русском языке, издание: Павел Агуров C#. Разработка компонентов в MS Visual Studio. Книга старая, но актуальная до сих пор, если работаете на WinForms.
Спасибо! Ознакомлюсь после "CLR via C#", все советуют ее для новичков.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.02.2017, 13:45
Помогаю со студенческими работами здесь

Авторизация пользователей в приложении на C#
При загрузке MDI приложения, главной формы, с помощью какого метода: Activated, Load или Shown, нужно выводить окно авторизации.

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

Авторизация в приложении
Всем привет, вообщем есть форма авторизации, необходимо подключится к ДБ Access и сверять данные введенные пользователем, с имеющимися в...

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

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


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru