Frage zwecks Forum Login für Launcher

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 23 Antworten in diesem Thema. Der letzte Beitrag () ist von RaZeR_2.

    Frage zwecks Forum Login für Launcher

    Hallo,


    wollte mal Erfragen ob meine Idee umsetzbar ist bevor ich es Versuche.

    Und zwar betreibe ich ein WBB4 Forum mit einem Launcher für ein Spiel/Mod. Jetzt wollte ich Wissen, ob es möglich ist ein art Login in diesen Launcher einzubauen mit den Login Daten vom Forum, damit sich User nicht doppelt Registrieren müssen. Nach Login im Launcher, wollte ich bestimmte Felder frei geben.

    Ist dies möglich oder generell viel zu Unsicher/nicht machbar?

    Vielen Dank.
    Klar ist das machbar. Du musst nur rausfinden wie WBB die Login-Daten in der Datenbank speichert oder ob es sogar schon eine fertige Schnittstelle gibt.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Okay, man könnte auch ein Benutzerfeld einbauen wo die User selber ein Passwort eintragen und diese einzeln in der Datenbank gespeichert werden. Somit könnte man das "eigentliche" Passwort etwas besser schützen, oder liege ich da falsch?

    Hat jemand vielleicht solch ein TuT schon einmal gesehen? So ein wenig als Leitfaden da ich ungerne Fehler einbauen möchte :)
    Moin,

    hier community.woltlab.com/thread/2…ostID=1360151#post1360151 ist ein einfach PHP-Skript mit dieser Funktion beschrieben.
    Du müsstest $username und $password nur die richtigen Werte mit zB $_GET zuweisen.

    Grüße,
    Lukas
    Grüße,
    Lukas

    Fragen über Themen im Forum per Konversation werden gelöscht und die Absender blockiert...
    Okay glaube das ist doch eine Nummer zu groß für mich, muss ich mal schauen wie / bzw wer mir das machen könnte. Geplant war:

    - Login durch Foren Daten
    - Wenn Login erfolgreich, Felder/Buttons mit weiteren Option werden geöffnet/gezeigt
    - ggf Login Daten speichern (Local beim User)
    Moin,

    ich mach dir jetzt mal ne Anleitung:

    1. Vorbereitungen auf dem Server
    Du musst im gleichen Ordner wie das WBB ist, eine Datei mit dem Namen externalLogin.php erstellen.
    Inhalt:

    PHP-Quellcode

    1. <?php
    2. require_once('global.php');
    3. $username = $_GET['user']; // or email
    4. $password = $_GET['pass'];
    5. try {
    6. $user = wcf\system\user\authentication\UserAuthenticationFactory::getInstance()->getUserAuthentication()->loginManually($username, $password);
    7. } catch (UserInputException $e) {
    8. if ($e->getField() == 'username') {
    9. try {
    10. $user = wcf\system\user\authentication\EmailUserAuthentication::getInstance()->loginManually($username, $password);
    11. } catch (UserInputException $e2) {
    12. echo "Login failed: Username wrong";
    13. die();
    14. }
    15. } else {
    16. echo "Login failed: Password wrong";
    17. die();
    18. }
    19. }
    20. \wcf\system\WCF::getSession()->changeUser($user);
    21. echo "Login success";


    2. Anwendung
    Du musst in der Anwendung folgende Funktion erstellen:

    VB.NET-Quellcode

    1. Public Enum WBBLoginResults
    2. LoginSuccess
    3. LoginFailedUserWrong
    4. LoginFailedPassWrong
    5. UnknownError
    6. End Enum
    7. Public Function Login(LoginFile As Uri, Username As String, Password As String) As WBBLoginResults
    8. Dim externalLoginResult = New System.Net.WebClient().DownloadString(LoginFile.ToString() & "?user=" & Username & "&pass=" & Password)
    9. If externalLoginResult = "Login success" Then
    10. Return WBBLoginResults.LoginSuccess
    11. ElseIf externalLoginResult = "Login failed: Username wrong" Then
    12. Return WBBLoginResults.LoginFailedUserWrong
    13. ElseIf externalLoginResult = "Login failed: Password wrong" Then
    14. Return WBBLoginResults.LoginFailedPassWrong
    15. Else
    16. Return WBBLoginResults.UnknownError
    17. End If
    18. End Function
    19. Public Function IsLoginSuccess(Result As WBBLoginResults) As Boolean
    20. Return Result = WBBLoginResults.LoginSuccess
    21. End Function


    Aufgerufen wird das so:

    VB.NET-Quellcode

    1. Dim LoggedIn = IsLoginSuccess(Login(New Uri("http://domain.tld/wbb4/externalLogin.php"), "admin", "password"))


    So sollte das in etwa Funktionieren.

    Grüße,
    Lukas
    Grüße,
    Lukas

    Fragen über Themen im Forum per Konversation werden gelöscht und die Absender blockiert...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Luki-Progger“ ()

    Sushi87 schrieb:

    Ausführung des Buttons
    drauf klicken?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Gut, das könnte man ja noch umbauen. Aber warum ich auf dem Schlauch stehe (sorry bin nicht so der Profi wie viele hier)

    Normal habe ich Boxen etc immer so gemacht:


    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. If UserName.Text = "blabla" and Passwort.Text = "1234" Then
    3. NextForm.Show()
    4. Else
    5. MsgBox("Geht nicht")
    6. End If
    7. End Sub


    Sorry für die Blödheit von mir....
    Naja Luft nach Oben besteht auf jedenfall, Verstehe die Zusammenhängen, habe aber noch nie mit LoginForm etc gearbeitet. Eher mit solch einfachen Sachen wie Launcher, Benutzeroberflächen etc....

    Also grob gesagt: Noch nie etwas "Spezielleres" gemacht.... :( Habe Bücher, ebooks und gewisse Seiten mit TuT's.
    Die Grundlagen fehlen aber noch gewaltig, z. B. korrekte Instanziierung von Klassen, denn Du kannst nur mit Objekten arbeiten.
    Das ist mir jetzt bei der Form aufgefallen, zwar wird da mit diesem Code intern eine Default-Instanz erzeugt, aber das macht schnell Probleme, siehe dazu Dialoge: Instanziierung von Forms und Aufruf von Dialogen

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Also auf gut deutsch fehlen dir so gut wie sämtliche Grundlagen. Ansonsten könntest du den Code von oben ohne weiteres übernehmen. Im Gegenteil um den Code von oben übernehmen zu können bräuchte man nicht mal Grundlagenwissen. Ich würde dir also vorschlagen erstmal wirklich Grundlagen von VB.NET anzuschauen. Auch was ist eine Sub, eine Function,...


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.