PHP Laravel 5.3问题

时间:2017-02-04 18:02:37

标签: php laravel authentication permissions routes

我搜索了有关我要解决的两个问题的信息,但我无法清楚地了解如何解决这个问题。特别是,对于Laravel 5.3来说,很多事情都发生了变化,信息比以前的版本少。

  • 我的第一个问题是:我需要显示不同的视图,具体取决于我使用的是PC还是移动设备。我怎么能解决它?
  • 我的第二个问题是:如何修改web.php文件中的路由和重定向?例如:
    • 如果用户是" admin",首先我需要能够获取该参数(不知道如何在路由中执行此操作)并且如果它是真的,重定向到管理面板视图。在其他情况下,重定向到主视图。
    • 同样,如果非管理员试图访问管理面板的视图(例如,他知道路径),他应该重定向到主屏幕。

非常感谢你的帮助。

祝您度过愉快的一天。

何塞拉拉。

3 个答案:

答案 0 :(得分:0)

这是第二个问题的答案。

  

如何将未经授权的人或订户重定向到登录名或   不受限制的页面,或者我们可以对页面说,每个人都可以   访问。

AdminController中的

不会忘记使用使用身份验证;

public function __construct()
{
  $this->middleware('admin);
}
public function index()
{ 
  return view('adminpanelview');
}

in **HomeController**
public function index()
{ 
  return view('homeview');
}
**Web.php** route will be like 

Route::get('/Admin',['uses'=>'AdminCotroller@index','as'=>'admin']);
Route::get('/home',['uses'=>'homeCotroller@index','as'=>'home']);

in **Admin.php** we should put the below code 
public function handle($request, Closure $next)
{
  if(!Auth::user()->admin)
  { 
   return redirect()->route('home');
   //return to non
  }
  return $next($request);
}
 in **Kernel.php** **protected $routeMiddleware** we should register this middleware
'admin' => \App\Http\Middleware\Admin::class

答案 1 :(得分:0)

要回答第一个问题,请首先检测设备(可以使用Jenssegers Agent之类的东西)并相应地从其他目录加载刀片视图,您可以通过更改config\view.php文件

<?php

$agent = new Jenssegers\Agent\Agent(); // Load the provider 
$viewBasePath = realpath(base_path('resources/views')); // Save default path
$viewsPaths = [$viewBasePath];
if ($agent->isMobile()) { // If the device is mobile
    // Load same view by name but from the mobile directory
    array_unshift($viewsPaths, $viewBasePath.'/mobile');
}
return [
    'paths' => $viewsPaths,
    ...............

答案 2 :(得分:-1)

我猜您的1号问题与刀片模板(视图)有关。如果正确,则刀片模板(视图)与引导集成有关。您的要求是,引导移动视图可以为您解决这个问题。转到[https://www.w3schools.com/bootstrap/tryit.asp?filename=trybs_default&stacked=h][1],您将对自己想要的东西有更好的了解。