我有2个laravel项目,1个用于前端,我使用html css angularjs。 api控制器的第二个。我使用http post调用并使用angularjs获取api控制器函数来获取内容数据。
在前端我有一个菜单,此菜单根据用户角色显示不同,如果是管理员或否。
这样做了。我的问题是使用浏览器中的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');
我得到的结果和菜单在网站上显示的是基于已登录的用户,如果他是管理员或没有。
现在,为了解决直接网址访问问题,我想使用此会话并将网址与此会话进行比较,如果会话中存在网址我会让他访问,如果不是我会将其重定向到某处。 任何想法?
答案 0 :(得分:0)
我强烈建议在自定义实现过于漫长之前查看有关授权的Laravel文档:
https://laravel.com/docs/5.1/authorization
如果不了解更多关于前端和后端应用程序如何相互影响的信息,那么进入特定应用程序有点困难,但我会尽力而为。
Laravel返回的每个页面都可以访问Request
对象,该对象包含有关返回页面的请求的信息。您可以使用Laravels辅助函数访问此Request
及其关联的Route
(如果您尚未将其传递给视图)。 getPrefix()
方法将返回根相对网址,然后您可以根据需要使用它。例如:
// 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();
}
我希望这会给你一些想法,祝你好运!