Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/47: Рейтинг темы: голосов - 47, средняя оценка - 4.57
0 / 0 / 1
Регистрация: 31.10.2014
Сообщений: 45

Авторизация и роли

07.06.2015, 00:03. Показов 9428. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Авторизация, роли и привелегии

Введение:
Я сейчас работаю над программой для выведения данных для получения информации о продутках. Это Клиентская программа, и этой базой пользуються через веб браузер. База данных на MySql. Выборку из базы, добавление и апгрейт я разобрался. Пришло время для того чтобы в аторизацию добвать роли. Тоесть чтобы разные пользователи имели разные привелегии.

Решение в других языках:
До этого эту базу я сделал на РНР. Там я переменные из базы пользователей добавил в сессию а дальше дело пошло на ура:
PHP
1
2
3
4
5
6
$level1= row("level1");
$level2 = row("level2");
if ($level1>50 || $level2 = 1)
{
echo "Поздровляю вы Зарегестрированный покупатель(level1 отвечает за привелегии) и Вот ваши покупки (level2 отвечает за покупки)  ";
}
В C# я новичек и поэтому пожалуйста помогите мне. Я не нашел в поисковике что то похоже на сессию. Ну или как передать данные из одной формы на все последующие? Если есть другой способ помогите пожалуйста.
Код:
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
using System.Security.Cryptography;
 
namespace MWD_1
{
    public partial class login_form : Form
    {
        public login_form()
        {
            InitializeComponent();
            u_pass.PasswordChar = '▓';
            u_pass.MaxLength = 10;
            u_name.MaxLength = 20;
        }
        string Datasource = Properties.Settings.Default.datasource;
        string Port = Properties.Settings.Default.port;
        string Username = Properties.Settings.Default.username;
        string Password = Properties.Settings.Default.password;
        string Database = Properties.Settings.Default.database;
        string Table_date = Properties.Settings.Default.table_date;
        string Table_user = Properties.Settings.Default.table_user;
        
       public string GetMD5(string text)
        {
            MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
            md5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(text));
            byte[] result = md5.Hash;
            StringBuilder str = new StringBuilder();
             for (int i=1; i < result.Length; i++)
             {
                 str.Append(result[i].ToString("x2"));
 
             }
             return str.ToString();
        }
 
 
 
        private void label1_Click(object sender, EventArgs e)
        {
 
        }
 
        private void auth_btn_Click(object sender, EventArgs e)
        {
 
            {
                try
                {
                    string parole = GetMD5(u_pass.Text);
 
                    string myConnection = " datasource = " + Datasource + "; port=" + Port + "; username=" + Username + ";password=" + Password + "";
                    MySqlConnection myConn = new MySqlConnection(myConnection);
                    MySqlCommand SelectCommand = new MySqlCommand("select * from " + Database + "." + Table_user + " where login_user='" + this.u_name.Text + "'and password='" + parole + "';", myConn);
                    MySqlDataReader myReader;
                    myConn.Open();
                    myReader = SelectCommand.ExecuteReader();
                    int count = 0;
                    while (myReader.Read())
                    {
                        count = count + 1;
                        
                        string sNsf = myReader.GetString("nsf");
                        string sLevel = myReader.GetString("level");
                        string sOwner_level = myReader.GetString("o_level");
 
                        //string admin_level = myReader.GetString("level");
 
                        if (count == 1)
                        {
                            //MessageBox.Show("Username and Password in OK");
                            //this.Hide();
                            //MessageBox.Show("Welcome  " + Nsf + " !!!");
                            main_gate mg = new main_gate("Welcome:" + sNsf + "(" + sLevel + ")-(" + sOwner_level+")");
                          mg.ShowDialog();
                              
 
                              
                        }
                        else if (count > 1)
                        {
                            MessageBox.Show("Username and Password Dupliicate");
                        }
                        else
                            MessageBox.Show("Username and Password(" + parole + ") is not correct");
                        
                    }
                     
                   
                    myConn.Close();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.06.2015, 00:03
Ответы с готовыми решениями:

Авторизация по роли
У меня имеется таблица User. В ней имеется 3 столбца Логин, Пароль и Роль. Вообщем мне надо сделать так чтобы после авторизации переходило...

Авторизация с выбором Ромы и Роли
Здравствуйте форумчане! Очень нужна помощь. Создал форму авторизации в которой используются логин и пароль от доменной авторизации. Не...

IBExpert - где устанавливать юзерам роли? Не могу задать роли юзера БД
Здраствуйте, подскажите как назначить роли ползователям БД? В IBexpert захожу в Менеджер прав, а дальше что делать не знаю... Версия...

7
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
07.06.2015, 12:51
UAA1979, как один из вариантов - хранить данные о роли пользователя в самой БД, и при попытке авторизации запрашивать эти данные. В зависимости от того, какие данные пришли, принимать решение о правах пользователя.
0
0 / 0 / 1
Регистрация: 31.10.2014
Сообщений: 45
07.06.2015, 15:25  [ТС]
Ну роли таки и хранятся в Базе. Есть два варианта.
Первый как нибудь без сессий сохранить роли в страничке авторизации. Я пробовал передать данные из одной формы( авторизации login_form) в другую ( Форма которая открывается после авторизации: main_gate) Но увы не получилось ((

Второй метод муторный. Это уже нужно создавать несколько второстепенных форм чтоб login_form открывал их в зависимости от того какой логин пароль будет вводиться. ( main_gate, main_gate2, main_gate3 ... etc) Но мне желательнее первый вариант ибо там забот меньше и кода конечно)
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
07.06.2015, 16:18
Цитата Сообщение от UAA1979 Посмотреть сообщение
Я пробовал передать данные из одной формы
Цитата Сообщение от UAA1979 Посмотреть сообщение
Но увы не получилось ((
Что, совсем?)))
Вам нужен пример?)))
0
0 / 0 / 1
Регистрация: 31.10.2014
Сообщений: 45
07.06.2015, 19:58  [ТС]
Было бы неплохо ткнуть носиком, если честно я новичек. Помогите пожалуйста если не трудно!
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
07.06.2015, 21:19
Цитата Сообщение от UAA1979 Посмотреть сообщение
Помогите пожалуйста если не трудно!
Не трудно. Вот готовый проект. Тип БД-SQLite, она там есть. В БД два пользователя: Mike, пароль 111 и Mary, пароль 222. Make - admin, Mary - user.
Пробуйте.
Вложения
Тип файла: rar UserRoles_Demo.rar (492.8 Кб, 655 просмотров)
3
0 / 0 / 1
Регистрация: 31.10.2014
Сообщений: 45
09.06.2015, 07:27  [ТС]
Спасибо, хоть и с SQlite я не работал но так все понятно.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
09.06.2015, 08:18
Цитата Сообщение от UAA1979 Посмотреть сообщение
с SQlite я не работал но так все понятно.
Для другого типа БД просто меняем строку подключения и тип используемых классов (хотя, при желании, можно написать более общий код, который будет работать с (почти?) любой БД, достаточно изменить строку подключения).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.06.2015, 08:18
Помогаю со студенческими работами здесь

Ошибка при работе с ролями (нужно назначить второй роли первую в качестве роли)
Не получается назначьте второй роли первую в качестве роли. Как я хочу это сделать: AlTER ROLE Адм2 IN ROLE Адм1 Возникает ОШИБКА: ...

Что использовать - роли Acl или же роли в системе?
Проблема... В системе есть роль. Люди с этой ролью нажимают кнопки, имеют другой доступ к документу и получают уведомления Вопрос в...

Как вывести всех пользователей, привязанных к роли, кроме текущего (того, кто тоже в этой роли)?
Есть роль User (identity).Текущий пользователь заходит в приложение и видит список всех пользователей в роли User, выведенных на экран,...

Роли
Делаю по Радченко. Запускаю конфигуратор под Администратором, потом нажимаю &quot;отладка&quot; и запускается Предприятие под...

Роли
В справочнике &quot;Пользователи&quot; создал табличную часть чтобы показывать пользователю какие у него есть роли. В таблице 2 столбца: Наименование...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru