it-swarm-eu.dev

Integrace WordPressu na mé webové stránky, při zachování vlastního autentizačního systému

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.

3
apatik

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.

1
fsenna

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ů.

Reference

1
Pat J

Zde je příklad autentizačního pluginu. Vytáhne informace z proměnných php relace. Toto je způsob použití:

  1. uložit do souboru mycustom-auth.php
  2. změnit konstanty v blízkosti vrcholu třídy
  3. umístit do wp-content/plugins/mycustom_auth nebo wp-content/mu-plugins
  4. povolit v wp-admin
  5. odhláste se z WP a znovu se přihlaste. V přihlašovacím formuláři WP byste měli vidět jeden další řádek, který vás přenese do vlastního ověřovače. Klikněte na něj a pak se vraťte na WP, abyste zjistili, zda jste přihlášeni
 
/* 
 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 
} 
} 
 
 
?> 
0
user42826