Laravel 5 Laravel 5.1使用会话根据用户角色限制使用URL用户的直接访问
我有两个laravel项目,一个用于前端,我使用html css angularjs。第二个用于api控制器。我使用HTTPPOST调用,并使用angularjs获取api控制器函数以获取内容数据 在前端我有一个菜单,这个菜单根据用户角色的不同而不同,如果是admin或no 这已经完成了。我的问题是使用浏览器中的url访问视图 因此,我有一个查询,从中可以得到每个用户在菜单中可以看到的模块。现在我把结果放在Laravel会议上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
$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();
}
我希望这能给你一些想法,祝你好运