Если нам нужно провести аутентификацию и авторизацию пользователей, информация о которых лежит в базе данных, то нужно использовать область безопасности jdbc. Для этого создадим 3 таблицы: users, groups, user_groups. Пользователи и группы связаны отношением многие ко многим через таблицу user_groups. Пароли в полльзователях хранятся в виде слепка MD5. Вот схема таблиц:
/******************************************************************************/
/*** Generated by IBExpert 25.08.2014 17:42:10 ***/
/******************************************************************************/
/******************************************************************************/
/*** Following SET SQL DIALECT is just for the Database Comparer ***/
/******************************************************************************/
SET SQL DIALECT 3;
/******************************************************************************/
/*** Tables ***/
/******************************************************************************/
CREATE TABLE USERS (
USER_ID INTEGER NOT NULL,
USERNAME VARCHAR(20) NOT NULL,
"PASSWORD" VARCHAR(32)
);
/******************************************************************************/
/*** Primary Keys ***/
/******************************************************************************/
ALTER TABLE USERS ADD CONSTRAINT PK_USERS PRIMARY KEY (USER_ID);
/******************************************************************************/
/*** Privileges ***/
/******************************************************************************/
/******************************************************************************/
/*** Generated by IBExpert 25.08.2014 17:42:32 ***/
/******************************************************************************/
/******************************************************************************/
/*** Following SET SQL DIALECT is just for the Database Comparer ***/
/******************************************************************************/
SET SQL DIALECT 3;
/******************************************************************************/
/*** Tables ***/
/******************************************************************************/
CREATE TABLE GROUPS (
GROUP_ID INTEGER NOT NULL,
GROUP_NAME VARCHAR(50) NOT NULL
);
/******************************************************************************/
/*** Primary Keys ***/
/******************************************************************************/
ALTER TABLE GROUPS ADD CONSTRAINT PK_GROUPS PRIMARY KEY (GROUP_ID);
/******************************************************************************/
/*** Privileges ***/
/******************************************************************************/
/******************************************************************************/
/*** Generated by IBExpert 25.08.2014 17:42:44 ***/
/******************************************************************************/
/******************************************************************************/
/*** Following SET SQL DIALECT is just for the Database Comparer ***/
/******************************************************************************/
SET SQL DIALECT 3;
/******************************************************************************/
/*** Tables ***/
/******************************************************************************/
CREATE TABLE USER_GROUPS (
USER_ID INTEGER NOT NULL,
GROUP_ID INTEGER NOT NULL
);
/******************************************************************************/
/*** Primary Keys ***/
/******************************************************************************/
ALTER TABLE USER_GROUPS ADD CONSTRAINT PK_USER_GROUPS PRIMARY KEY (USER_ID, GROUP_ID);
/******************************************************************************/
/*** Foreign Keys ***/
/******************************************************************************/
ALTER TABLE USER_GROUPS ADD CONSTRAINT FK_USER_GROUPS_1 FOREIGN KEY (USER_ID) REFERENCES USERS (USER_ID);
ALTER TABLE USER_GROUPS ADD CONSTRAINT FK_USER_GROUPS_2 FOREIGN KEY (GROUP_ID) REFERENCES GROUPS (GROUP_ID);
/******************************************************************************/
/*** Privileges ***/
/******************************************************************************/
Далее создадим вью в БД, которая объединяет пользователей и группы:
/*-------------------------------------------------------------------------*/
/* Creating new views */
/*-------------------------------------------------------------------------*/
CREATE OR ALTER VIEW V_USER_GROUPS(
USER_ID,
USERNAME,
"PASSWORD",
GROUP_ID,
GROUP_NAME)
AS
select ug.user_id, u.username, u."PASSWORD", ug.group_id, g.group_name from user_groups ug
inner join users u on ug.user_id = u.user_id
inner join groups g on ug.group_id = g.group_id
;
/*-------------------------------------------------------------------------*/
/* Restoring descriptions for views */
/*-------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------*/
/* Restoring descriptions of view columns */
/*-------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------*/
/* Restoring privileges */
/*-------------------------------------------------------------------------*/
GRANT SELECT, UPDATE, DELETE, INSERT ON V_USER_GROUPS TO "PUBLIC";
Теперь создаем и конфигурируем область безопасности согласно рисунку:
|