Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 5 Laravel 5.1使用会话根据用户角色限制使用URL用户的直接访问_Laravel 5 - Fatal编程技术网

Laravel 5 Laravel 5.1使用会话根据用户角色限制使用URL用户的直接访问

Laravel 5 Laravel 5.1使用会话根据用户角色限制使用URL用户的直接访问,laravel-5,Laravel 5,我有两个laravel项目,一个用于前端,我使用html css angularjs。第二个用于api控制器。我使用HTTPPOST调用,并使用angularjs获取api控制器函数以获取内容数据 在前端我有一个菜单,这个菜单根据用户角色的不同而不同,如果是admin或no 这已经完成了。我的问题是使用浏览器中的url访问视图 因此,我有一个查询,从中可以得到每个用户在菜单中可以看到的模块。现在我把结果放在Laravel会议上 $menu = DB::select menu by user id

我有两个laravel项目,一个用于前端,我使用html css angularjs。第二个用于api控制器。我使用HTTPPOST调用,并使用angularjs获取api控制器函数以获取内容数据

在前端我有一个菜单,这个菜单根据用户角色的不同而不同,如果是admin或no

这已经完成了。我的问题是使用浏览器中的url访问视图

因此,我有一个查询,从中可以得到每个用户在菜单中可以看到的模块。现在我把结果放在Laravel会议上

$menu = DB::select menu by user id ... //Getting menu query based on user if admin or no

session(["menu" => $menu);
return session('menu');
我得到的结果和菜单是显示良好的网站根据登录的用户,如果他是管理员或否

现在,为了解决直接url访问问题,我想使用此会话并将url与此会话进行比较,如果会话中存在url,我将允许他访问,如果没有url,我将把他重定向到某个地方。
有什么想法吗?

我强烈建议在深入了解定制实现之前,先看看Laravel关于授权的文档:

如果不了解更多关于前端和后端应用程序如何相互作用的信息,进入特定领域有点困难,但我会尽我所能

Laravel返回的每个页面都可以访问
请求
对象,该对象包含有关返回页面的请求的信息。您可以使用Laravels helper函数访问此
请求
及其关联的
路由
(如果尚未将其传递到视图)。
getPrefix()
方法将返回根相对url,然后您可以根据需要使用该url。例如:

// Return and store the URL as a string
$url = request()->route()->getPrefix();

// Check your session for the URL/s you want to allow and compare to the stored URL
if (session()->get('URL') == $url) {
    // User is allowed access to the page
    // Do something ...
} else {
    // User is not allowed access to this page
    // Redirect back or to a route of your choice
    return redirect()->back();
}
我希望这能给你一些想法,祝你好运