【问题标题】:How do i authenticate multiple models like users,agents,admin and so on我如何验证多个模型,如用户、代理、管理员等
【发布时间】:2017-01-10 05:22:58
【问题描述】:

我正在构建一个拥有许多资源用户的 API,例如 我的数据库中有这些表users,agents,driversadmin

如果他们想访问资源或检查他们的详细信息,他们应该登录查看,我该怎么做

我是否应该选择 laravel passport 并在所有模型中都这样做:

<?php

namespace App;

use Laravel\Passport\HasApiTokens;  //for agents, drivers, admin
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable  
{
    use HasApiTokens, Notifiable; //for agents, drivers, admin
}

我现在很困惑,请指出正确的方向。

谢谢!

【问题讨论】:

  • 你到底想通过 api 得到什么??
  • @SoniyaReddy 该 API 包含所有用户详细信息和司机代理详细信息,如果用户登录,他可以看到他的个人资料和携带物品的司机(仅他的详细信息)以及司机在哪个代理下是,如果代理登录,他可以添加驱动程序有多个代理基于位置如何在它们下添加任意数量的驱动程序等等,
  • 无论他是司机还是代理还是用户或管理员登录必须只有一个吧??根据他们的凭据,您需要显示详细信息吗??
  • @Soniya Reddy 没有所有模型都在数据库中,都是必需的,它是驱动程序和代理以及用户和管理员

标签: php laravel api laravel-5.3 laravel-passport


【解决方案1】:

没问题!

只需使用角色!!!

您将拥有一个处理所有 AUTH 的用户模型... 并为每个用户分配一个角色“代理”

然后例如:

if (Auth::user()->hasRole('agent')){
   ....
}else if( Auth::user()->hasRole('driver')){
   ....
}else if( Auth::user()->hasRole('admin')){
   ...
}else if( Auth::user()->hasRole('support')){
   ...
}

明白了吗? 您还可以拥有任何角色的权限,例如:

public function hasPermission(Permission $permission)
{
    return $this->hasRole($permission->roles);
}

只需搜索“LaravelUser ACL 角色和权限”

【讨论】:

  • @Dani Banai 谢谢你的时间,我是 laravel 的新手,我应该在我的User 模型中定义所有角色,
  • 不,你需要创建角色模型!只需将此作为开始(第 1 部分到第 4 部分):laracasts.com/series/whats-new-in-laravel-5-1/episodes/13
  • 非常感谢您的时间,我真的很感激,我正在为mobile and web app 建立一个APIagents 将拥有可以登录到CRUD 的移动应用程序drivers 其中admin 将与web app 一起给出CRUD agents 因为这是一个API 没有session 来存储agents and admin 的身份验证所以我应该为代理(应用程序)和管理员(网络)提供access_token 对吗?这就是我卡住的地方,我应该使代理和“管理员”模型可验证以实现这一点?还是我的执行不好?谢谢
猜你喜欢
  • 2014-05-21
  • 2020-02-05
  • 2012-10-14
  • 1970-01-01
  • 2018-02-12
  • 1970-01-01
  • 1970-01-01
  • 2011-07-26
  • 1970-01-01
相关资源
最近更新 更多