我有幾個關於zf-oauth(Apigility)和php-oauth服務器數據庫模式的問題。關於ZF-Oauth「官方」數據庫模式的問題
數據庫模式是:
https://github.com/zfcampus/zf-oauth2
https://bshaffer.github.io/oauth2-server-php-docs/
https://apigility.org/documentation/modules/zf-oauth2
所以,這個模式似乎真的「站:
CREATE TABLE oauth_clients (
client_id VARCHAR(80) NOT NULL,
client_secret VARCHAR(80) NOT NULL,
redirect_uri VARCHAR(2000) NOT NULL,
grant_types VARCHAR(80),
scope VARCHAR(2000),
user_id VARCHAR(255),
CONSTRAINT clients_client_id_pk PRIMARY KEY (client_id)
);
CREATE TABLE oauth_access_tokens (
access_token VARCHAR(40) NOT NULL,
client_id VARCHAR(80) NOT NULL,
user_id VARCHAR(255),
expires TIMESTAMP NOT NULL,
scope VARCHAR(2000),
CONSTRAINT access_token_pk PRIMARY KEY (access_token)
);
CREATE TABLE oauth_authorization_codes (
authorization_code VARCHAR(40) NOT NULL,
client_id VARCHAR(80) NOT NULL,
user_id VARCHAR(255),
redirect_uri VARCHAR(2000),
expires TIMESTAMP NOT NULL,
scope VARCHAR(2000),
id_token VARCHAR(2000),
CONSTRAINT auth_code_pk PRIMARY KEY (authorization_code)
);
CREATE TABLE oauth_refresh_tokens (
refresh_token VARCHAR(40) NOT NULL,
client_id VARCHAR(80) NOT NULL,
user_id VARCHAR(255),
expires TIMESTAMP NOT NULL,
scope VARCHAR(2000),
CONSTRAINT refresh_token_pk PRIMARY KEY (refresh_token)
);
CREATE TABLE oauth_users (
username VARCHAR(255) NOT NULL,
password VARCHAR(2000),
first_name VARCHAR(255),
last_name VARCHAR(255),
CONSTRAINT username_pk PRIMARY KEY (username)
);
CREATE TABLE oauth_scopes (
type VARCHAR(255) NOT NULL DEFAULT "supported",
scope VARCHAR(2000),
client_id VARCHAR (80),
is_default SMALLINT DEFAULT NULL
);
CREATE TABLE oauth_jwt (
client_id VARCHAR(80) NOT NULL,
subject VARCHAR(80),
public_key VARCHAR(2000),
CONSTRAINT jwt_client_id_pk PRIMARY KEY (client_id)
);
你可以找到它ARD」因爲被Zend Technologies公司(Zend框架和apigility)通過,但我有一些問題:
爲什麼沒有任何的‘普通’的主鍵? (int自動增量字段)。
我會使用oauth_users
表註冊帳戶和表單的字段是「電子郵件」和「密碼」。我可以將電子郵件存儲到oauth_users.username
字段中,但將此字段用作外鍵似乎不是一個好主意。最後,我的網址在profile-url/[:id]
比profile-url/[:username/]
(我的情況是電子郵件)好看。那麼,我必須創建一個自定義主鍵還是可以解決問題?爲什麼沒有外鍵?這個問題與第一個有關。我必須添加外鍵或者我可以反對問題?使用
oauth_users.username
作爲我的其他表的外鍵,這似乎不是一個好主意。
1)部分原因是用一個查詢來支持主要數據庫(這裏是對apigility使用的包的合併請求,它解決了這個問題https://github.com/bshaffer/oauth2-server-php/pull/149) 。以自動增量爲例,你會失去PostgreSQL。 – Adam