SSO-Weiterleitungslink

I am using wordpress as a SSO client to discourse.

How do I set it up so a user is sent back to the page he/she was on after logging in.

Here is what my SSO URL looks like:


As you can see it redirects to my website homepage. Could I edit this link to redirect the user back to the page he was on? will this mess up the SSO?

Yes, you can set any page on your WordPress site as the value for redirect_to. You probably do not have to URL encode the redirect_to parameter. Something like this should work:

http://theprojectvanlife.com/?discourse_sso=1&redirect_to=http://theprojectvanlife.com/my-wordpress-page

so by adding “my-wordpress-page” as the redirect it will redirect user to the page he/she was on?
Or did you mean to replace “my-wordpress-page” with the page I want the user redirected to?

Yes. set the redirect_to parameter to the URL of the page you want users to end up on.

Is it possible to setup a redirect to link that just sends them back to the same page they were on?

You can use the [discourse_sso_client] shortcode on any WordPress page to create a ‘Login with Discourse’ link that will redirect users back to the page that the shortcode was placed on.

There is some documentation on the plugin’s SSO Client tab for the shortcode.

There was a bug in the most recent versions of the plugin that was causing the shortcode to display the ‘Link your account with Discourse’ text for logged in users who had already linked their account. Update to WP Discourse version 1.6.0 to get the fix.

Hey, ich denke, es wäre eine einfache, aber großartige Ergänzung der Plugin-Funktionalität, wenn du das auch umsetzen könntest: Ein separates Anmeldeformular/Link?. Ich verwende Discourse als SSO-Master, und es wäre sehr nützlich, sowohl eine Anmeldeseite für bestehende Benutzer als auch einen Registrierungslink für neue Benutzer bereitzustellen, mit einer Weiterleitung auf die ursprüngliche Seite, von der sie kamen.

Hey, wir haben aktuell keine Pläne, hier etwas über den redirect_to-Parameter hinaus umzusetzen.

Es ist etwas komplizierter, als es scheint, jemanden „zurück auf dieselbe Seite zu leiten, auf der er sich befand“. Es gibt ziemlich viele Randfälle. Wenn wir das als Kernfunktion hinzufügen würden, würden wir uns im Grunde dazu verpflichten, all diese Randfälle ebenfalls zu unterstützen :slight_smile: Wie du dir vorstellen kannst, gibt es sehr viele verschiedene Möglichkeiten, eine WordPress-Site zu konfigurieren.

Ich habe dir dazu bereits einen kleinen Hinweis gegeben, aber um dir etwas mehr auf die Sprünge zu helfen, solltest du oder dein Entwickler etwas Ähnliches wie im Folgenden tun, nämlich den bestehenden Shortcode so erweitern, dass er automatisch route_to auf die aktuelle URL der Site setzt. Anschließend kannst du die Randfälle dafür für deine spezifische Site selbst klären.

In functions.php

use WPDiscourse\SSOClient\SSOClientShortcode;

function render_discourse_sso_client_link_with_redirect() {
    $sso = new SSOClientShortcode();
    $protocol = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http");
    $current_url = "$protocol://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
    $options = array(
      "redirect"  => $current_url,
      "login"     => "Login"
    );
    return $sso->discourse_sso_client_shortcode( $options );
}
add_shortcode( 'discourse_sso_client_link_with_redirect', 'render_discourse_sso_client_link_with_redirect' );

Verwende dann in deiner Vorlage den Shortcode [discourse_sso_client_link_with_redirect]

Danke, das hilft mir sehr, Kumpel!