2017-11-29 3 views
0

Ich werde versuchen, es zu erklären. Im Entwickeln einer E-Commerce-Anwendung und um Backend-Autorisierung bereitzustellen, habe ich Laravel Policies auf ein Modell (Produktmodell) angewendet.Laravel Policies in Model und wie Autorisierung in bestimmten Ansichten vermieden werden kann.

Das Problem liegt, wenn ich versuchte, das gleiche Produktmodell in Frontend-Ansichten zu verwenden, wo alle Benutzer die Produkte sehen können.

Die Richtlinien werden auf das gesamte Modell angewendet, unabhängig davon, ob die Routenansicht geschützt ist und ich einige Ansichten nicht finden kann (zB: Frontend> Produkte auflisten), um Informationen aus dem Modell ohne Autorisierungsrichtlinie abzurufen.

ZB: der Politik im Backend anzeigen angewendet:

public function view(User $user) 
{ 
    $method = (string)$this->ability; 
    if ($user->hasRole($this->Model) === null) { 
     return 0; 

    } 
    return $user->hasRole($this->Model)->$method; 
} 

Was ich noch eine öffentliche Funktion in der Produktpolitik, die Produkte in Frontend erstellen Liste müssen, ist ohne Genehmigung für den Benutzer anfordert.

danke.

Antwort

1

Möglicherweise möchten Sie eine Konstruktorfunktion in Ihrem Controller erstellen, die nicht authentifizierten Benutzern den Zugriff auf die Produktansicht ermöglicht. Das folgende Snippet bietet Zugriff auf alle Funktionen im Controller, mit Ausnahme der Funktion zum Löschen (Session Destroy, Logout).

public function __construct() 
{ 
    $this->middleware('guest', ['except' => 'destroy']); 
} 

Ich hoffe, das hilft Ihnen in die richtige Richtung.

+0

danke. Es löst einen Teil des Problems, mit dem Middleware-Gast die Ansicht gerendert wird, aber die Produktinformationen (wegen der Richtlinien) nicht. –

Verwandte Themen