如何在 Laravel 中实现管理面板和客户面板
Posted
技术标签:
【中文标题】如何在 Laravel 中实现管理面板和客户面板【英文标题】:How to implement both the Admin & Customer Panel in Laravel 【发布时间】:2019-10-01 08:28:08 【问题描述】:**新蜜蜂
**Laravel
我想使用 URL http://127.0.0.1:8000/admin
访问管理面板,使用 URL http://127.0.0.1:8000/
访问客户面板
Customer Login: http://127.0.0.1:8000/login
Admin Login: http://127.0.0.1:8000/admin/
我设置了一个会话变量来识别我的AdminController.php
中的用户是否是admin or customer
,并检查该用户必须是管理员才能访问的每个功能。下面是脚本
AdminController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Auth;
use Session;
class AdminController extends Controller
public function index()
return view('admin.index');
public function login(Request $request)
Auth::attempt(['email' => $request->email, 'password' => $request->password, 'user_type' => 'admin']);
//was any of those correct ?
if ( Auth::check() )
//send them where they are going
Session::put('userType', 'admin');
return redirect()->route('admin.dashboard');
return redirect('/admin')->with('flash_message', 'Invalid Credentials');
public function dashboard()
if( Session::has('userType') and Session::get('userType') == 'admin' )
return view('admin.dashboard');
else
return redirect('/admin')->with('flash_message', 'Please login to access');
public function posts()
if( Session::has('userType') and Session::get('userType') == 'admin' )
return view('admin.posts');
else
return redirect('/admin')->with('flash_message', 'Please login to access');
public function logout()
Session::flush();
return redirect()->route('admin');
我正在检查用户是否在像 if( Session::has('userType') and Session::get('userType') == 'admin' )
这样的每个函数中都是管理员。那么有没有更好的方法呢??????
现在,当我登录到管理面板时,我也可以访问客户的 http://127.0.0.1:8000/home
,但这不应该访问,因为我以管理员身份而不是客户身份登录。
现在如何为 2 种不同类型的用户启用会话变量并确保用户的可访问性???
web.php
<?php
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', function ()
return view('welcome');
);
Route::get('/home', 'HomeController@index')->name('home');
Auth::routes();
Route::get('/admin', 'AdminController@index')->name('admin');
Route::post('/admin/login', 'AdminController@login')->name('admin.login');
Route::get('/admin/dashboard', 'AdminController@dashboard')->name('admin.dashboard');
Route::get('/admin/posts', 'AdminController@posts')->name('admin.posts');
Route::get('/admin/logout', 'AdminController@logout')->name('admin.logout');
【问题讨论】:
我认为你应该阅读一些关于如何开发基于角色的身份验证的教程,即使用守卫或中间件等。你会找到更好的选择。 我同意 Gaurav Rai - 阅读一些教程。此外,您需要研究中间件,以便让您的控制器更薄。您应该将中间件应用于仅管理员路由并在那里检查正确的角色,而不是在所有控制器方法上添加相同的逻辑。 非常感谢您提供的信息,我一定会看看并尝试实现它。 嘿,我已经完成了,你能告诉我如何在使用 Laravel 的默认身份验证登录后设置会话吗?? 【参考方案1】:您需要的是middleware 或某种第三方软件包,例如laratrsut
【讨论】:
以上是关于如何在 Laravel 中实现管理面板和客户面板的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 laravel 5.1+ 在 web 应用程序中实现许可功能
Unity3D 在自定义脚本中实现Button组件上的OnClick面板