PHP týden Předvánoční slevová akce
Pouze tento týden sleva až 80 % na PHP e-learning!
Využij předvánočních slev a získej od nás 20 % bodů zdarma! Více zde
Avatar
Vakos
Redaktor
Avatar
Vakos:13. září 9:22

Ahoj, mám problém v .net Core si Identity. Přesněji se jedná o problém s URL, která se zasílá při vytvoření nového účtu, zapomenutí hesla atd.

Všechno funguje, jen nevím jak bych si mohl změnit tvar URL, přesněji host, tedy doménu. Někde to musí jít změnit, jen nevím kde.

Například to ukážu u zapomenutého hesla.
První tam proběhne nějaké vygenerování tokenu, což vrátí nějaký kód, to je ok.

var code = await _userManager.GeneratePasswordResetTokenAsync(user);

Potom tam probíhá generování URL a v tom je ten problém.

var callbackUrl = Url.Page(
        "/Account/ResetPassword",
        pageHandler: null,
        values: new { code },
        protocol: Request.Scheme);

Tuto část kódu ani pořádně nechápu. První parametr je kam to má směřovat ✓, druhý neznám dopodrobna, ale ten by to ovlivňovat neměl ✓, třetí jsou parametry, které se vloží do url ✓ a čtvrtý je protokol ✓.

Podle mě to musí nastavovat nějak metoda Page, ale nevím z kama bere tu hodnotu, kterou tam vloží a to bych chtěl zjistit.

Je možnost si celý ten callback upravit, tak aby to fungovalo, tak jak chci, rád bych ale pochopil původní funkci a nejlépe i využil.
Upravená verze by mohla vypadat nějak takto:

var callbackUrl = $"mojedomena.cz/Identity/Account/ResetPassword?code={code}";

Věděli by jste jak tam propašovat vlastní doménu pomocí toho prvního způsobu?

Děkuji

Editováno 13. září 9:22
Odpovědět
13. září 9:22
"Jediný způsob, jak dělat skvělou práci, je milovat to, co děláte. Pokud jste to ještě nenašli, hledejte dál. Ne...
Avatar
Martin Petrovaj
Překladatel
Avatar
Odpovídá na Vakos
Martin Petrovaj:13. září 10:17

Nepomohol by ti tento overload?

Url.Page("/Account/ResetPassword", pageHandler: null, values: new { code }, protocol: Request.Scheme, host: "mojedomena.cz", fragment: null);

Vytiahol som to z aktuálnych zdrojákov ASP.NET Core, čo je de facto verzia 3, ale mohlo by to fungovať aj v 2.X

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět
13. září 10:17
if (this.motto == "") { throw new NotImplementedException(); }
Avatar
Vakos
Redaktor
Avatar
Odpovídá na Martin Petrovaj
Vakos:13. září 10:31

Paráda. To je ono. I tak se ještě zeptám. Z kama to předtím bralo host?

Nahoru Odpovědět
13. září 10:31
"Jediný způsob, jak dělat skvělou práci, je milovat to, co děláte. Pokud jste to ještě nenašli, hledejte dál. Ne...
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Martin Petrovaj
Překladatel
Avatar
Odpovídá na Vakos
Martin Petrovaj:13. září 10:55

Myslím, že sa to ťahá z Request.Url.Host. DefaultHttpRequest to má implementované tak, že tento host sa ťahá z hlavičiek requestu.

Nahoru Odpovědět
13. září 10:55
if (this.motto == "") { throw new NotImplementedException(); }
Avatar
Vakos
Redaktor
Avatar
Odpovídá na Martin Petrovaj
Vakos:13. září 23:47

To ano. Z kama je ale ten prapůvod toho host? To je nějaká IP adresa na které to běží? Doména to nebude, protože měl jsem to už na produkci a tam to házelo popsaný problém.

Nahoru Odpovědět
13. září 23:47
"Jediný způsob, jak dělat skvělou práci, je milovat to, co děláte. Pokud jste to ještě nenašli, hledejte dál. Ne...
Avatar
Martin Petrovaj
Překladatel
Avatar
Odpovídá na Vakos
Martin Petrovaj:14. září 0:33

Priznám sa, že tieto veci obvykle sám neriešim, ale predpokladal by som, že to ide z IIS.

Ak si to dobre pamätám z dávnych čias, tak v IIS manageri keď si rozklikneš Connections > NazovServera > Sites > TvojaStranka a na to klikneš pravým, tak sa vieš dostať do Site Bindings. Tam by sa práve mali nastavovať veci ako host, IP adresa, SSL certifikát a tak (IIS si to tuším fyzicky ukladá do nejakého .config súboru, nemalo by byť ťažké ho aj dohľadať niekde pod inetsrv zložkou).

Môj first guess by teda bol, že tie headery IISko nastavuje podľa týchto site bindings. Určite ma ale v tomto ohľade neber ako znalca alebo autoritu, ani poriadne neviem, či som správne odpovedal na tvoju otázku :-D

Nahoru Odpovědět
14. září 0:33
if (this.motto == "") { throw new NotImplementedException(); }
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.