Nedávno jsem integroval WordPress na mé webové stránky a já jsem se snažil zjistit správný způsob, jak nahradit Wordpress 'autentizační systém s jedním na mých webových stránkách.
Moje webová stránka již obsahuje uživatelskou databázi a uživatel je ověřován pomocí relací PHP.
Mým cílem je jednoduše odstranit WordPress 'integrovaný registr/přihlašovací formulář, a dělat to tak, že uživatelé již přihlášeni na mé webové stránky mají přístup k funkcím Wordpressu jednoduše prostřednictvím session_start()
(a kontroly oprávnění). Nebyl bych používat databázi uživatelů programu Wordpress.
Většina informací, které jsem našel na tomto tématu, je většinou o integraci externí databáze do Wordpressu, jako plugin Externí autentizace databáze Reloaded , ale jen velmi málo o tom, jak vlastně změnit způsob, jakým WordPress kontroluje, zda je uživatel přihlášen před udělením přístupu .
Chtěl bych správně pochopit, jak umožnit uživatelům přihlášeným na mých webových stránkách získat stejná práva, jako kdyby byli také přihlášeni do mého WordPressu (kontrolou, zda $_SESSION['simple_auth'] == true
)
Chápu, že tato otázka již byla položena; Udělal jsem nějaký výzkum, ale většinou hledám radu, jak to udělat (nebo proč bych to neměl dělat) a některé pokyny, které by mi mohly pomoci.
Používáte Auth0 ( http://www.auth0.com ) možná pro vás možnost? Mají velmi dobrý Wordpress plugin.
Myslím, že byste mohli integrovat svůj systém a udělat Single Sign On (SSO) pomocí pluginu.
Myslím, že je to lepší volba pro to, abyste v systému integrovali nějaké věci (protože znáte systém a můžete být pravděpodobně produktivnější) pomocí této https://auth0.com/docs/oauth-web-protocol a nechat plugin starat se o všechno na Wordpress.
Autentizační systém WordPressu je tvořen zásuvnými funkcemi , což znamená, že můžete napsat plugin, který má funkci pojmenovanou, například wp_authenticate()
, a vaše stránky budou používat funkci vaše wp_authenticate()
místo místo nativního WordPress jeden.
Váš komentář o is_user_logged_in()
(na vašem původním příspěvku) je vyloučen tím, že is_user_logged_in()
volá zaváděcí wp_get_current_user()
, což znamená, že tak můžete napsat vlastní wp_get_current_user()
a kontrolu is_user_logged_in()
.
Takže byste měli být schopni napsat autentizační systém pro WordPress, který bude používat vaši již existující databázi uživatelů.
Zde je příklad autentizačního pluginu. Vytáhne informace z proměnných php relace. Toto je způsob použití:
/* Plugin Název: mycustom Authenticator Popis: Ověření proti vlastnímu ověřovateli, který používá php relace Verze: 1.0 */ new mycustom_auth (); class mycustom_auth { const AUTH_URL = 'http://domain.com/mylogin.php "; // vlastní autorizační url const USERNAME = "username"; // proměnná php session pro uživatelské jméno const EMAIL = "email"; // proměnná php relace pro email addreess const FIRSTNAME = "first"; // proměnná php session pro jméno - nepovinné const LASTNAME = "last"; // proměnná php session pro příjmení - nepovinné function mycustom_auth () { add_filter ('authenticate', array ($ this, 'authenticate'), 20, 3); add_action ('login_form', array ($ this, 'login_form')); add_action ('login_head', pole ($ this, 'login_head')); // remove_filter ('authenticate', 'wp_authenticate_username_password', 20, 3); } function authentication ($ user, $ username, $ password) { if (is_a ($ user, 'WP_User')) { return $ user; } $ uid = $ _SESSION [mycustom_auth :: USERNAME]; $ email = $ _SESSION [mycustom_auth :: EMAIL]; $ firstname = $ _SESSION [mycustom_auth :: FIRSTNAME]; $ lastname = $ _SESSION [mycustom_auth :: LASTNAME] ; if (! isset ($ _ SESSION [mycustom_auth :: USERNAME]) || empty ($ uid)) { vrátí nový WP_Error ('invalid_username', __ (' Vlastní chyba přihlášení : php session nenastaveno. ')); } $ user = get_user_by (' login ', $ uid); // může místo toho získat e-mailovou adresu if (! $ user) { $ user = $ this-> create_user ($ uid, $ email, $ firstname, $ lastname); .] if (! $ user) { vrátí nový WP_Error ('invalid_username', __ (' Vlastní chyba přihlášení : Nejste momentálně registrovaný uživatel pro tento web.')); } } vrací nový WP_User ($ user-> ID); } function create_user ($ username, $ email, $ firstname, $ lastname) { if (prázdný ($ username) || empty ($ email)) return null; $ user_id = wp_insert_user (pole ('user_login' => $ username, 'user_email' => $ email, 'first_name' => $ křestní jméno, 'last_name' => $ lastname)); $ user = new WP_User ($ user_id); $ user-> set_role (mycustom_auth :: DEFAULT_ROLE); return $ user; } function login_form () { echo ' ". __ ('Přihlášení pomocí Custom', 'custom_login'). } function login_head () { // umístit zde vlastní styling } } ?>