3

I have a WP site and also have a external DB (means not WP DB) with users. The insertion process at that table uses the same algorithm as WP uses. What I'm need to do here is login in WP but using this external DB which is in the same host by the way. I check this links http://www.tyssendesign.com.au/articles/cms/connecting-to-external-database-from-within-wordpress/ and http://wordpress.org/extend/plugins/external-database-authentication/ and for the first is not what I'm want but for the second one is not compatible with WP 3+ and I'm using 3.3.1, any suggestion or docs or something else?

5 Answers 5

5

You can override the core wp_authenticate function.

You would need to create a custom plugin and declare a new version of wp_authenticate. The function accepts a username and a password and returns a WP $user object.

wp_authenticate is a 'pluggable' function and it is found in the wp-includes/pluggable.php file.

3
  • can this function work at functions.php in my theme? Also how to connect to an external DB and check in that for username and password?
    – ReynierPM
    May 23, 2012 at 20:38
  • The function has to be in a plugin, it won't work in functions.php (has to do with how plugable functions are loaded in WP).
    – Roscius
    May 24, 2012 at 13:23
  • You could use php mysql/mysqli functions to connect to the database to validate the username and password, the db connection would just be standard php db usage. It'd be good however to understand password hashing/salting processes to ensure best practices for password storage.
    – Roscius
    May 24, 2012 at 13:26
5

I needed more features than I could find elsewhere so I wrote my own plugin - External Login.

It has these main features:

  • Map a different DB table structure to be compatible with the WordPress fields
  • Handle different hashing methods from your external database (bcrypt, MD 2 4 and 5, SHA 256 384 and 512, and many many more)
  • Allow for different salting methods
  • Generate a copied version of the user in the database so that you can continue to use common WordPress features with users and roles
  • Map roles from your ‘external database’ to those found in WordPress e.g. a student in the ‘external database’ becomes an editor in the WordPress database.

Let me know if you require another feature :)

https://en-gb.wordpress.org/plugins/external-login/

3

Have you tried the External Database Authentication plugin? Just because it hasn't been updated in a while doesn't mean it won't necessarily work. At the very least you can look at their source code to see how they did what they did and use that as a basis to get what you need done.

Here is the code http://plugins.trac.wordpress.org/browser/external-database-authentication/trunk/ext_db_auth.php

1
  • Yes I see that plugin but is a bit complex because I'm not a WP experts and a lot of things are new to me
    – ReynierPM
    May 23, 2012 at 20:37
2

I've just updated that old plugin for my needs. You can find the update @ http://www.7mediaws.org/extend/plugins/external-db-auth-reloaded

1
  • 1
    page not found :/
    – PayteR
    Sep 26, 2017 at 21:46
0

Yes, your plugin is awesome. Just what you need to improve and finalize your plugin is that in newer WordPress versions, there are two different tables that contain user data. They are wp_user and wp_usermeta. And in the plugin, it is provided only one table to authenticate. So if this feature goes right, definitely your plugin is 100% successful.

What else, is that there is a bug. As there is only one table to authenticate, so I couldn't authenticate user roles and sync them. This means when I enable external login, the time I logged out, and login the next time, I am of subscriber role, that I have specified if no roles matches. So i loosed my adminship too. Kindly help and understand.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.