php管理员普通用户,Laravel — 管理员和普通用户不在同模型中的处理方法

问题描述:效能评议系统,后台管理员和前台评价用户在两个模型中,Administrator和 User ,无法实现两种角色同时在一台设备上登录。

解决方案:配置多个门卫去认证

1.修改配置 auth.php

认证是由 guard 和 provider 两部分构成的(参考用户认证文档),defaults 配置是选择哪一个 guard 认证驱动,所以我们在这两个配置项中分别添加一个 admin 和 admin 选项。

例如:

'guards' => [

'web' => [

'driver' => 'session',

'provider' => 'users',

],

'admin' => [

'driver' => 'session',

'provider' => 'admin',

]

],

1

2

3

4

5

6

7

8

9

10

'guards'=>[

'web'=>[

'driver'=>'session',

'provider'=>'users',

],

'admin'=>[

'driver'=>'session',

'provider'=>'admin',

]

],

'providers' => [

'users' => [

'driver' => 'eloquent',

'model' => App\Entities\User::class,

],

'admin' => [

'driver' => 'eloquent',

'model' => App\Entities\Administrator::class,

],

]

1

2

3

4

5

6

7

8

9

10

11

'providers'=>[

'users'=>[

'driver'=>'eloquent',

'model'=>App\Entities\User::class,

],

'admin'=>[

'driver'=>'eloquent',

'model'=>App\Entities\Administrator::class,

],

]

2.准备两个用户模型 User 和 Administrator

3.需要登录的路由中添加middleware,auth时,在带上对应的guard

前台的路由定义中 添加 auth:web 中间件

后台的路由定义中 添加 auth:admin 中间件 (若您登录后需要转向不同的地址,需要另外中间件)

4.配置不同的登录controller 复制laravel的 用户认证的controller,uses AuthenticatesUsers

针对不同的用户模型,修改对应 guard、username、loginview 、redirectTo等复合你需要的部分。

例如:

public function username()

{

return 'username';

}

protected $redirectTo = '/admin';

/**

* Create a new controller instance.

*

* @return void

*/

public function __construct()

{

$this->middleware('guest:admin', ['except' => 'logout']);

}

protected function guard()

{

return auth()->guard('admin');

}

public function showLoginForm()

{

return view('admin.auth.login');

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

publicfunctionusername()

{

return'username';

}

protected$redirectTo='/admin';

/**

* Create a new controller instance.

*

* @return void

*/

publicfunction__construct()

{

$this->middleware('guest:admin',['except'=>'logout']);

}

protectedfunctionguard()

{

returnauth()->guard('admin');

}

publicfunctionshowLoginForm()

{

returnview('admin.auth.login');

}

5.在controller或者service中要认证或者获取不同的用户模型时 加上guard 的对应参数 ,不传是默认是web

Auth::guard('admin')->user();

Auth::guard()->user();

1

2

Auth::guard('admin')->user();

Auth::guard()->user();

本文由

施, 晓燕创作,除注明转载/出处外,均为本站原创,转载前请务必署名

最后编辑时间为: 2019-07-27 11:57 星期六

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值