私の役割は動的で、そのユーザーの権限も動的です。ユーザーに特定のページへのアクセスが許可されているかどうかを検証する2つの方法があります。リクエストクラス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の各リクエストクラスを作成する必要がありますか?
- 承認を検証する方法はありますか?
ミドルウェアを使用する –
私の役割は動的に作成されます。ロールの権限は動的に割り当てられます。だからどの役割がどのパーミッションを持つのか分かりません。提案してください。 – Pankaj
jsutあなたはコントローラーでやっているようにしますが、ミドルウェアクラスでやり直してください。それで、もう一度やり直す必要はありません。 –