Мои роли динамичны, а их разрешения пользователя также являются динамическими. У меня есть два подхода к проверке, разрешен ли пользователю доступ к определенной странице.Проверка авторизации в Laravel 5.2
подход 1
class BaseController extends Controller
{
public function __construct() {
if(!\Auth::user()->IsPredefined) {
$result = $this->ValidateAuthorization();
if(!$result) {
\Auth::logout();
return redirect()->route("login");
}
}
}
private function ValidateAuthorization() {
$ActionName = \Route::getCurrentRoute()->getPath();
switch ($ActionName) {
case "ChangePassword":
$ModuleID = ModuleEnum::AccountManagemenet;
$ActionID = AccountActionEnum::ChangePassword;
return CheckUsePermissions($ModuleID, $ActionID);
}
}
private function CheckUsePermissions($ModuleID, $ActionID) {
$User = MySession::UserPermissions();
foreach($User->UserRolePermissions as $UserRolePermission) {
$CurrentActionID = $UserRolePermission->RolePermission->Permission->ActionID;
$CurrentModuleID = $UserRolePermission->RolePermission->Permission->ModuleID;
if($CurrentActionID == $ActionID && $CurrentModuleID == $ModuleID &&
$UserRolePermission->IsActive == true) {
return true;
}
}
return false;
}
}
подход 2
метод использования Авторизоваться в классе Request
public function authorize()
{
return true;
}
Путаница
- Если подход 2 хорош, должен ли я создавать класс Request для каждого Get, Put, Delete и POST?
- Есть ли лучший подход для проверки авторизации?
вы должны использовать промежуточное программное обеспечение –
Мои роли будут созданы динамически.Разрешение роли будет назначено динамически. Поэтому я понятия не имею, какая роль будет иметь это разрешение. Пожалуйста, предложите. – Pankaj
jsut делать это как вы делаете в контроллере, но делаете это в классе промежуточного программного обеспечения, так что вам не нужно писать его снова или снова –