Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用角色和用户两个链接表在laravel中实现多用户(4种用户类型)身份验证

如何使用角色和用户两个链接表在laravel中实现多用户(4种用户类型)身份验证
EN

Stack Overflow用户
提问于 2018-12-20 11:46:00
回答 2查看 77关注 0票数 1

我正在制作我的第一个laravel (和编程)项目。我想做一个只有两个表的多用户认证系统:用户和角色,表的代码显示在用户下面

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$table->increments('id'); 
$table->string('name'); 
$table->string('email')->unique(); 
$table->integer('role_id')->unsigned(); 
$table->foreign('role_id')->references('id')->on('roles'); 
$table->string('password'); 
$table->rememberToken(); 
$table->timestamps();

角色

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$table->increments('id'); 
$table->string('role');

身份验证是使用laravel命令实现的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
php artisan make:auth

我已经使用laravel命令创建了midlleware admin、user1、user2和user3

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
php artisan make:midlleware 

如何从注册时分配给用户的users表中实现基于role_id的中间件分配?我有一个想法来制作这样的东西:在HomeController中

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public function __construct()
    {     
       if($this->role_id=="1"){
        $this->middleware('admin'); }

       if($this->role_id=="2"){
        $this->middleware('user0');  }

       if($this->role_id=="3"){
        $this->middleware('user1'); }

       if($this->role_id=="4"){
        $this->middleware('user2'); }
    }

但是我有一个错误,未定义的属性: App\Http\Controllers\HomeController::$role_id

然后我在控制器中创建了__toString方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public function __toString()
    {
      return $this->role_id;
    } 

我尝试回显$this以查看它的格式,我得到一个错误方法App\Http\Controllers\HomeController::__toString()不能抛出异常,捕获ErrorException:未定义的属性: App\Http\Controllers\HomeController::$role_id

我是在一个好的轨道上吗?或者,谁能给我一个建议,实现多用户身份验证的最简单方法是什么,但没有或只有一个额外的(权限)表?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2018-12-20 11:57:59

您不能访问role_id,因为它是用户模型上的属性,而不是控制器上的属性。这就是“未定义的属性”错误的含义。$this引用的是控制器对象,而不是用户模型。

假设您已经将role_id属性添加到用户模型的$fillable数组中,那么\Auth::user()->role_id应该可以工作。

票数 1
EN

Stack Overflow用户

发布于 2018-12-20 12:37:26

首先,您尝试在此HomeController类中不定义$role_id

其次,在构造完成之前不能使用身份验证中间件,因为构造函数是在中间件之前创建的,这就是为什么它返回null.check here

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
use Auth;

class Homecontroller extends Controller{

   private $role_id;

   public function __construct(){

   }

   public function __toString(){
      $authUser = Auth::user(); // or Auth::user()->role_id;
      $this->role_id = $authUser->role_id;

      if($this->role_id=="1"){
        $this->middleware('admin'); 
      }

      if($this->role_id=="2"){
        $this->middleware('user0');  
      }

      if($this->role_id=="3"){
        $this->middleware('user1'); 
      }

      if($this->role_id=="4"){
        $this->middleware('user2'); 
      }

      return $this->role_id;
   }
}

另一种方法应该是使用这个middleware-parameters

编码快乐~!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53868067

复制
相关文章
Laravel使用 Jwt-auth 实现多用户接口认证
首先创建数据库和表(admins),在 routes/api.php 中,写上如下路由并创建对应控制器和方法。
用户10002156
2023/08/07
6470
Laravel使用 Jwt-auth 实现多用户接口认证
在【用户、角色、权限】模块中如何查询不拥有某角色的用户
用户与角色是多对多的关系, 一个角色可以被赋予给多个用户,一个用户也可以拥有多个角色; 查询不拥有某角色的所有用户, 如果用leftjoin查询,会造成重复的记录: 举例错误的做法:
liulun
2019/07/19
2.7K0
Laravel 多角色用户权限
Gates 和 Policies $this->authorize () 方法 @can 和 @cannot Blade 命令
切图仔
2022/09/14
1.6K0
Laravel 多角色用户权限
在ubuntu多用户中使用磁盘配额
多用户ubuntu主机,必须设定磁盘配额,否则会被滥用,导致home目录被占满,不得不换磁盘或者扩展大小。
羽翰尘
2019/11/20
2.4K0
用户、角色和权限
InterSystems IRIS®具有系统级安全性,以及一组与sql相关的额外安全性特性。 在数据库级保护之外,InterSystems SQL安全性提供了额外级别的安全功能。 SQL和系统级安全性之间的一些关键区别是:
用户7741497
2022/06/07
2.1K0
Laravel框架用户登陆身份验证实现方法详解
本文实例讲述了Laravel框架用户登陆身份验证实现方法。分享给大家供大家参考,具体如下: laravel中检测用户是否登录,有以下的代码:
用户2323866
2021/07/07
1.3K0
使用ss的多用户模式
就是使用一个配置文件,存放多个端口+密码的信息,如果你在共享你的ss,那么这个功能将十分实用。
老高的技术博客
2022/12/28
6090
虹科分享|在ntopng中使用多用户模式
并非所有 ntop 用户都知道 ntopng 本机实现了多用户支持。也就是说,您可以使用ntopng收集和分析来自多个用户的流量,并向每个用户显示自己的流量,隐藏其余所有流量。
虹科网络可视化与安全
2023/02/09
4290
虹科分享|在ntopng中使用多用户模式
libev版优化, 实现多端口多用户, 同端口多用户(多密码).
特征: 自动加载配置文件夹内除config-obfs.json的配置文件. 如需新建一个用户,直接创建一个 config_NAME.json 文件即可.(NAME自行替换) 说明: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 # 查找自启动文件 AutoFile=“$(ls -1 /etc/init.d/*-libev |head -n1)”; # 检测查找结果 [ –n “$AutoFile” ] || exit 1; #
用户1202364
2018/07/09
1.5K1
PostgreSQL用户角色和权限管理
4、任何属于该组角色的对象都必须先被删除或者将对象的所有者赋予其它角色,任何赋予该组角色的权限也都必须被撤消。
数据和云
2022/02/25
4.8K0
PostgreSQL用户角色和权限管理
Git多用户配置
转载请注明:noahsnail.com     在Git使用中经常会碰到多用户问题,例如:你在公司里有一个git账户,在github上有一个账户,并且你想在一台电脑上同时对这两个git账户进行操作,此时就需要进行git多用户配置。     首先配置不同的SSH KEY,使用ssh-keygen命令产生两个不同的SSH KEY,进入.ssh目录:
Tyan
2022/05/09
1.2K0
windowsXP(SP3)多用户的实现
       由于台式机放卧室太吵,影响夫人就寝,于是就一直用笔记本做与VMware虚拟机和小凡的相关实验,而性能强大的台式机摆在客厅,便沦落成老婆看QQ直播的“电视机”。笔记本性能摆在那里,同时开三台虚拟机就有点不爽了,如何充分利用台式机就成了当务之急。        众所周知,xp默认是不支持多用户同时登陆的,也就是说,当我们远程上xp的时候本地用户就被踢出来,只能由一个用户使用。在网上东找西找,总算找到完美的解决方案: 1、下载附件,用附件里的同名文件在安全模式覆盖以下文件(请做好备份): C:\Windows\system32\TermSrv.DLL,C:\Windows\system32\dllcache\TermSrv.DLL。 2、正常登陆Windows XP,如果系统的文件保护功能提示TermSrv.DLL文件被修改,问是否要复原,选择否。 3、运行附件里的1.bat,或者自行修改注册表相关键值: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\Licensing Core,在该键下新建一个名为“EnableConcurrentSessions”的DWORD值,并设置该值的数据为1。 4、在Windows XP用户帐户管理中启用了“欢迎屏幕”、“快速用户切换”功能。       以上4点缺一不可。通过这样修改后,老婆看她的QQ直播,我用另一账户远程上台式机同时做我的实验,两不误。已验证完美支持Windows XP sp2、sp3!
py3study
2020/01/10
1K0
OpenStack将项目和用户加入到角色中
命令语法 openstack role add --project 项目名 --user 用户名 角色名 样例 openstack role add --project hzab --user hq woker
院长技术
2020/06/13
1.9K0
使用RoleBasedAuthorization实现基于用户角色的访问权限控制
添加库 Sang.AspNetCore.RoleBasedAuthorization
桑榆肖物
2022/11/18
1.3K0
windows怎么设置多用户_windows开启多用户远程桌面
在实际使用我们较多使用的都是windows系统的单用户模式,它意味着当我们登录一个用户的时候如果另外一个用户也在登录,那么就得等待另外一个用户退出后才可以登录我们这个用户,但是实际需求中,我们经常会遇到多人同时登录操作同一台电脑的需求。下面就来解决这个问题吧。
全栈程序员站长
2022/09/20
3.7K0
SSserver多用户配置(四)
最后一部分,关于这部分的内容网上真的很多教程,而且都很实用,实在没有自己再写一篇的想法,故搬运了一下seo上排名靠前的一篇来教大家如何进行多用户配置,如果大家有看系列教程的前三篇就更好,因为多用户配置更多的是针对整个系列,帮助大家更多地搭建属于自己的SSserver。 当然搬运的那一篇是《搬瓦工Shadowsocks配置总结》(www.jianshu.com/p/36e55c289d65) 还是老规矩,进入有root权限的终端。 输入下面命令打开配置文件 vi /etc/shadowsocks.json 因
用户1203875
2018/07/20
2.7K0
Hive多用户模式安装
hadoop01-hadoop04:hadoop集群 hadoop01:MySQL服务器 hadoop02:Hive服务端 hadoop03-hadoop04:Hive客户端
CoderJed
2018/09/13
1.6K0
Hive多用户模式安装
Java实现多用户即时通信系统
因为还没有学习数据库,我们人为规定用户名/id = 100, 密码123456 就可以登录,其它用户不能登录 后面使用HashMap模拟数据库,可以多个用户登录。
timerring
2023/05/24
1.4K0
Java实现多用户即时通信系统
点击加载更多

相似问题

Laravel多用户类型

47

在laravel中实现用户角色

10

laravel 4.2.4多用户类型

11

Laravel 5新身份验证:获取当前用户和如何实现角色?

264

Laravel中的多用户类型设计

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文