![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Здравствуйте!
Вопрос: Надо сделать авторизацию на главной форме для входа в программу! Есть два пользователя - Администратор-пороль, Продавец-пороль! И как это будет в Access, в таблице поле Администратор-пороль, Продавец-пороль? Вообщем, пожалуйста отпишите код на примере с названием таблицы если это надо! И вы мне очень поможете Заранее спасибо! |
|
#2
|
||||
|
||||
|
делаешь таблицу на 3 поля (остальные на твоё усмотрение)
1. Автоинкремент 2. Логин 3. Пароль Делаешь форму для ввода логина и пароля и создаешь её перед главной форме а дальше уже проверка на правильность |
|
#3
|
|||
|
|||
|
Вообщем, все сделал сам! Программная авторизация без какой либо базы для двух пользователей! Если кому надо то вот код
PHP код:
|
|
#4
|
|||
|
|||
|
Цитата:
Врятли такой код кому понадобится, вообще, если бы у меня хоть один программист подобное написал, я бы его уволил)) |
|
#5
|
|||
|
|||
|
Asinkrit Покажи как надо.
![]() |
|
#6
|
|||
|
|||
|
Цитата:
Легко) Вырезки из одного проекта (база ms access): во первых, перед запуском приложения, надо вывести сплеш окно для ввода логина и пароля, и если в базе таковые имеются, то приложение стартует, иначе нет. Файл проекта: Код:
Application.Initialize;
Application.CreateForm(TDM, DM);
DM.DBPath:=ExtractFilePath(Application.ExeName)+'_Garanties.mdb';
FKSplash := TFKSplash.Create(Application);
FKSplash.Show;
FKSplash.Update;
while not FKSplash.Going do Application.ProcessMessages;
if FKSplash.Stop then
begin
DM.Free;
FKSplash.Hide;
FKSplash.Free;
end
else
begin
FKSplash.Hide;
FKSplash.Free;
// в этом месте создание форм и модулей
Application.Run;
end;В дата модуле, подключение и проверка на наличие юзера: Код:
function TDM.ConnectToDB: boolean;
begin
try
ABase.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+
FDBPath+';Mode=ReadWrite;Persist Security Info=False;Jet OLEDB:Database Password=19473396';
ABase.Connected:=true;
finally
Result:=ABase.Connected;
end;
end;
function TDM.GetUserID(const aLogin, aPassword: TStr50): Integer;
begin
with QuerrySQL do
try
if active then close;
SQL.Text:='select user_id, user_FIO, user_is_admin from users '+
'where user_login = '+QuotedStr(aLogin)+' and user_password = '+
QuotedStr(aPassword);
Open;
Last;
First;
if FieldByName('user_id').AsInteger > 0 then
begin
Result:=FieldByName('user_id').AsInteger;
FUserFIO:=FieldByName('user_FIO').AsString;
FIsAdmin:=FieldByName('user_is_admin').AsBoolean;
end
else
begin
Result:=0;
FUserFIO:='';
end;
if active then close;
except
Result:=0;
FUserFIO:='';
end;
FUserID:=Result;
end;В сплеш форме, проверяем на введенные данные: Код:
if DM.GetUserID(dxEdit1.Text,dxMaskEdit1.Text) = 0 then
StatusLabel.Caption:='Неверный логин или пароль...'
else
begin
FGoing := true;
FStop := false;
end;Или если нажата кнопка отмена, то Код:
FStop:=true;
FGoing:=true;Вообщем то все просто) ![]() Последний раз редактировалось Asinkrit, 27.11.2009 в 16:26. |
|
#7
|
||||
|
||||
|
Цитата:
Т.е. имя и пароль строго фиксированы...для простейшей защиты от родителей подойдет и так, но не более... Поступи по примеру Asinkrit храни данные о пароле и имени в базе данных...еще их можно хранить в реестре или файле...при этом желательно (и настоятельно) хоть немного зашифровать имя и пароль...и не хранить их в явном виде... Не обязательно выводить сплэш (хотя с ним красивее) для ввода пароля...можно и обычное модальное окно с 2-мя полями ввода и 2-мя кнопками... |
|
#8
|
||||
|
||||
|
Абсолютно согласен с Asinkrit.
Так и правельнее, и удобнее, и красивее ![]() |
|
#9
|
||||
|
||||
|
Ну во-первых, если делать систему доступа, то нужно определиться с привилегиями.
Во-вторых, хранить пароли и логины в виде хэшей и сравнивать хэш от хэша Почему нужны привелегии? Ибо если какой-нить продаван запустит в магазин товарища с отладчиком, то при простой проверке, можно заменить соответствующий байтик и получить доступ. Если есть система привилегий, то это сделать значительно сложнее |
|
#10
|
|||
|
|||
|
Все прочитал, объясняю! По задумке программы у меня всего два пользователя! Это Администратор и продавец! Еще каких либо пользователей не планируется, так что делать в БД таблицу на Пользователей нет смысла! К тому же, настройка подключения базы у меня делает программа, так что еще поэтому отпадает БД пользователей!
Поле пороль зашифрован звездочками, думаю этого будет достаточно! Темболее программа пишется не для большого предприятия ![]() |
|
#11
|
|||
|
|||
|
И вообще, если говорить на счет безопасности какой-то! То есть вариант сделать чтобы через каждый месяц выдавал сообщения о смене пороля! Вообщем смотря для какой программы делаешь защиту..и сколько в ней будет работать пользователей! Вообщем как то так
![]() |
|
#12
|
||||
|
||||
|
Цитата:
Как вариант, предлагаю тебе сделать формы с которыми работает продавец и формы с которыми работает администратор, и при проверке пароля соответственно их и показывать. А звездочками пароль не шифруеться . Это он так отображаеться в системе. Храни пароли в файле из двух строк - 1-я строка - это хэш пароля админа, а 2-я - хэш пароля продавца. Тогда система буден защищена надежнее. |
|
#13
|
|||
|
|||
|
Здравствуйте! Еще вопрос возник по авторизации! На всякий повторяю код моей авторизации
PHP код:
Вопрос: Мне надо сделать чтобы я мог сменить пороль Администратора и Продовца. Также логин и пороль должен записыватся в текстовый файл. Пожалуйста! Знающим, напишите код! Заранее спасибо! |
|
#14
|
|||
|
|||
|
Воспользуйся моим примером, который я давал выше, храни пароли в БД. То что ты написал, извини конечно, но это полная бредятина, кстати, половину строк можно выкинуть из твоего кода, и при этом все будет работать)
|
|
#15
|
|||
|
|||
|
Зачем мне БД скажи? Если у меня существуют только два пользователя Администратор и Продавец! Далее, Настройка пути к БД происходит в самой программе после авторизации так что БД отпадает! БД нужно было бы для того если пользователей было бы очень много! Если бы эта программа была многопользовательской! Думаю суть понял..
|