Die Benutzerauthentifizierung ist die erste Verteidigungslinie, die die Sicherheit des Systems gewährleistet und den unbefugten Zugriff verhindern kann. In yii können wir eine Klasse erstellen, die von yii \ base \ actionFilter als Middleware geerbt wurde, um ungeschickte Benutzer abzufangen.
Hier ist ein Beispielcode für einen Authentifizierungsfilter:
namespace app\filters;
use Yii;
use yii\base\ActionFilter;
class AuthFilter extends ActionFilter
{
public function beforeAction($action)
{
$user = Yii::$app->user;
if ($user->isGuest) {
$user->loginRequired();
return false;
}
return parent::beforeAction($action);
}
}
Dieser Filter überprüft, bevor der Benutzer auf einen geschützten Vorgang zugreift und auf die Anmeldeseite weiterleitet, wenn er nicht angemeldet ist.
Als nächstes müssen wir den Filter an den Controller binden:
namespace app\controllers;
use yii\web\Controller;
use app\filters\AuthFilter;
class SiteController extends Controller
{
public function behaviors()
{
return [
'auth' => [
'class' => AuthFilter::class,
'only' => ['admin'],
],
];
}
public function actionAdmin()
{
return 'Admin Area';
}
}
Im obigen Beispiel wird AuthFilter nur auf die Administratoraktion angewendet, um sicherzustellen, dass nur authentifizierte Benutzer auf diesen Teil des Inhalts zugreifen können.
Die Benutzergenehmigung wird verwendet, um festzustellen, ob ein angemeldeter Benutzer die Berechtigung hat, auf eine Ressource zuzugreifen oder eine bestimmte Operation auszuführen. Im YII -Framework können wir auch Filter verwenden, um die Autorisierungslogik zu vervollständigen.
Hier ist ein Beispielfilter, der die Benutzerautorisierung implementiert:
namespace app\filters;
use Yii;
use yii\base\ActionFilter;
use yii\web\ForbiddenHttpException;
class AccessControlFilter extends ActionFilter
{
public function beforeAction($action)
{
$user = Yii::$app->user;
if (!$user->can($action->id)) {
throw new ForbiddenHttpException('You are not allowed to perform this action.');
}
return parent::beforeAction($action);
}
}
Dieser Filter verwendet die Methode $ user-> can (), um festzustellen, ob der Benutzer die Berechtigung zur Durchführung der aktuellen Aktion hat. Wenn es keine Erlaubnis gibt, wird eine 403 verbotene Ausnahme ausgelöst.
Der Autorisierungsfilter wird ähnlich wie die Authentifizierung angewendet:
namespace app\controllers;
use yii\web\Controller;
use app\filters\AccessControlFilter;
class SiteController extends Controller
{
public function behaviors()
{
return [
'access' => [
'class' => AccessControlFilter::class,
'only' => ['admin'],
],
];
}
public function actionAdmin()
{
return 'Admin Area';
}
}
Auf diese Weise können wir den Zugriff des Benutzers auf bestimmte Controller -Vorgänge flexibel steuern.
In diesem Artikel wird beschrieben, wie der Filtermechanismus (d. H. Middleware) verwendet wird, um die Benutzerauthentifizierung und Berechtigungsregelung im YII -Framework zu implementieren. Diese Methode hat nicht nur eine klare Struktur, sondern verbessert auch die Sicherheit der gesamten Anwendung. Durch das Erstellen von Filterklassen und das Konfigurieren im Controller können Entwickler eine hochsteuerbare Zugriffsmanagementlogik implementieren, die eine der wichtigsten Praktiken beim Erstellen sicherer Webanwendungen ist.