Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Auth::user() zwraca null za każdym razem, Ten laravel jest zbhjcksopdk;la
Johnas
post
Post #1





Grupa: Zarejestrowani
Postów: 650
Pomógł: 16
Dołączył: 5.07.2010
Skąd: Ściśle Tajne

Ostrzeżenie: (0%)
-----


  1. <?php
  2.  
  3. namespace App\Http\Controllers;
  4.  
  5. use App\Models\Page;
  6. use Illuminate\Http\Request;
  7. use Illuminate\Support\Facades\View;
  8. use App\Http\Controllers\ConfigController as CC;
  9. use Illuminate\Support\Facades\Auth;
  10. use App\Http\Controllers\Accounts;
  11.  
  12.  
  13.  
  14. class PageController extends Controller
  15. {
  16. protected $user;
  17.  
  18. protected $menu;
  19.  
  20. protected $navigation;
  21.  
  22. protected $domain = "";
  23.  
  24. public function __construct()
  25. {
  26. $user = new Accounts();
  27.  
  28. /** To kurła nie działą -- >>> >ADS?<gf */
  29. $this->middleware(function ($request, $next) {
  30. $this->user = Auth::user();
  31. return $next($request);
  32. });
  33. $this->domain = request()->server('SERVER_NAME');
  34. $menu = $this->renderMenu();
  35. View::share("navigation", $menu);
  36.  
  37.  
  38. //$this->createPage("Testowa strona","To jest opis testowej strony", "test", "fasfafad", 1, 0, 1);
  39.  
  40. }
  41.  
  42. public function jakas_zjeana_funkcja() {
  43. $id = Auth::user()->id; // zwraca null (nie ma id)
  44. $user = Auth::user(); // No chyba twoja stara - zwraca zero
  45. if (Auth::guest()) // Sprawdzac tak mozesz czy cie nie ma w Częstochowie - nie działa
  46. Auth::id(); // haha w cyrku mieszkasz - null
  47.  
  48.  
  49. }


może to dlatego że mam kontroler w database, ale jak inaczej mam sprawdzać czy jest zalogowany -- nic nie działa, nie wiem jak sprawdzać inaczej użytkownika... Dlatego z tym pieronym frameworkiem nie pracowałem...
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




Nie uzywam laravel ale robiles wg instrukcji na tej stronie:
https://laravel.com/docs/9.x/authentication
?
Zalogowales wpierw uzytkownika ze probujesz go pobrac?
No i czemu w tym kontrolerze robisz jakis middleware? To wydaje sie byc zbedne.
Go to the top of the page
+Quote Post
viking
post
Post #3





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


A jesteś w ogóle zalogowany w aplikacji?
Go to the top of the page
+Quote Post
netir
post
Post #4





Grupa: Zarejestrowani
Postów: 45
Pomógł: 5
Dołączył: 20.05.2019

Ostrzeżenie: (0%)
-----


Troll post, ale na 100% nie jest zalogowany w sesji w której sprawdza i dostaje null'a. W Laravelu są też różne guardy uwierzytelniania, defaultowe to web i api, więc jak źle testowane to też zwróci nulla.

https://laravel.com/docs/9.x/authentication...ication-methods

  1. use Illuminate\Support\Facades\Auth;
  2.  
  3. $user = User::find($id);
  4. Auth::login($user);
  5.  
  6. dd(Auth::user());


Najlepiej wrzuć sobie to do route w web dla testu i zobaczysz, że działa.

Ten post edytował netir 13.09.2022, 11:44:15
Go to the top of the page
+Quote Post
Johnas
post
Post #5





Grupa: Zarejestrowani
Postów: 650
Pomógł: 16
Dołączył: 5.07.2010
Skąd: Ściśle Tajne

Ostrzeżenie: (0%)
-----


laravel jest bardziej pozabezpieczany przez co nigdy nie chciało mi się go używać... nie ma dostępu bezpośrednio w funkcjach do id użytkownika, albo robię coś nie tak...


w __construct klasy muszę wywołać funkcję gdzie można sprawdzić id:

  1. $this->middleware(function ($request, $next) {
  2. $this->user = Auth::user();
  3.  
  4. if (isset($this->user->id))
  5. $id = $this->user->id;
  6. else
  7. $id = false;
  8.  
  9. $menu = $this->renderMenu($id);
  10. View::share("navigation", $menu);
  11. return $next($request);
  12. });


a z niej dopiero funkcję ktorą chcę wywołać... naprawdę to jedyny sposób aby to wykonać? nieraz tworzę funkcję w której naprawdę potrzebuję id użytkownika
Go to the top of the page
+Quote Post
viking
post
Post #6





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


W każdym miejscu masz Auth::id().
Możesz zrobić komponent który będzie sam w sobie sprawdzał użytkownika i generował właściwe menu dla niego.
https://laravel.com/docs/9.x/blade#components
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




To co napisal viking to oczywiscie prawda. Ale jakby jakims cudem to nie istnialo to po to wymyslono operator ?? by uniknac takich kodow co tu masz:

  1. if (isset($this->user->id))
  2. $id = $this->user->id;
  3. else
  4. $id = false;


Caly ten kod powyzej mozna zapisac poprostu tak:
  1. $id = $this->user->id ?? null

I juz.
Ja dodatkowo zamiast false przypisal do id null, bo tak naprawde to powinno byc null gdy id nie istnieje a nie false ;)
Go to the top of the page
+Quote Post
com
post
Post #8





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


@nospor z tym trzeba uważać bo łatwo można się się potem na tym wyłożyć i trzeba wtedy rozumieć co się miało na myśli pisząc taka linie (IMG:style_emoticons/default/wink.gif) powinno być po prostu sprawdzenie czy user nie jest nullem i jak jest return z funkcji albo w php 8 nullsafe operator użyć (IMG:style_emoticons/default/wink.gif)

bo to ma ukryte efekty uboczne w postaci takiej że ten operator sprawdza, czy wartość istnieje i nie jest nullem i jak jest to druga cześć funkcji a tam z nulla robimy nulla (IMG:style_emoticons/default/wink.gif)

teraz wiemy czemu tak ale za pól roku już trzeba będzie się zastanawiać czemu tak, albo inny programista na to spojrzy w miedzy czasie (IMG:style_emoticons/default/smile.gif)

Ten post edytował com 14.09.2022, 11:25:18
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




Ja tam nie mam problemu ze zrozumieniem takiej linii.

Ok, mozna napisac i tak jak wspomniales
$id = $this->user?->id;

Aczkolwiek, ze dla mnie jest to jeszcze dosc nowa konstrukcja, taka linia jest dla mniej mniej zrozumiala. Ale to juz kwestia przyzwyczajenia (IMG:style_emoticons/default/wink.gif)


Cytat
i jak jest to druga cześć funkcji a tam z nulla robimy nulla

No i? Juz nie popadajmy w paranoje (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
com
post
Post #10





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


Jasne że Ty nie, ale nie każdy jest na takim poziomie jak my (IMG:style_emoticons/default/wink.gif)

Pewnie, nie chodzi o popadanie w paranoje, bardziej o fakt że na takim kodzie z ukrytym efektem ubocznym można się przejechać jak nie wie co sie robi (IMG:style_emoticons/default/wink.gif) bo jak się robi świadomie to żaden problem (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #11





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




Niech ci bedzie.
W sumie nawet

$id = $this->user?->id;

wyglada ladniej :D Tu trzeba miec tylko swiadomosc ze nullsafe nie dziala na tablicach podczas gdy ?? zadziala ladnie na tablicach. Skolei na nullsafe dziala na metodach a ?? juz nie :D Takze tak czy siak jedno czy drugie trzeba swiadomie uzywac
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.12.2025 - 09:29