내 역할은 동적이며 사용자의 권한도 동적입니다. 사용자가 특정 페이지에 액세스 할 권한이 있는지 확인하는 방법에는 두 가지가 있습니다.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
요청 클래스사용 권한 부여 방법
public function authorize()
{
return true;
}
혼란
,- 접근법 2가 좋은 경우 Get, Put, Delete 및 POST에 대한 Request 클래스를 만들어야합니까?
- 승인을 확인하는 더 나은 방법이 있습니까?
미들웨어를 사용해야합니다 –
내 역할이 동적으로 생성됩니다.역할의 권한은 동적으로 할당됩니다. 그래서 나는 어떤 역할이 어떤 허가를 가지는지 전혀 모른다. 제발 제안 해주세요. – Pankaj
jsut 컨트롤러에서하고 있지만 미들웨어 클래스에서하는 것처럼하면 다시 쓰거나 다시 쓸 필요가 없습니다. –