Laravel 5.5-成功登录后,如何向Auth::user()添加自定义值
成功登录后,我想向Laravel 5.5-成功登录后,如何向Auth::user()添加自定义值,laravel,laravel-5,Laravel,Laravel 5,成功登录后,我想向Auth::user()添加自定义值(角色) 我在\App\User protected $attributes = ['role']; protected $appends = ['role']; public function getRoleAttribute() { return $this->attributes['role']; } public function setRoleAttribute($value) { $this-&
Auth::user()
添加自定义值(角色)
我在\App\User
protected $attributes = ['role'];
protected $appends = ['role'];
public function getRoleAttribute()
{
return $this->attributes['role'];
}
public function setRoleAttribute($value)
{
$this->attributes['role'] = strtolower($value);
}
我从Auth\LoginController设置角色
function authenticated(Request $request, $user)
{
//I find $position based on some calculation
if($position == 1)
{
Auth::user()->role = 'director';
return redirect('supervisors');
}
}
我想在不同的页面中获取角色,比如$role=Auth::user()->role代码>(但返回错误)
如何实现这一点?首先获取用户详细信息,然后更新用户详细信息,如
$user = User::findOrFail(Auth::user()->id);
$user->role = "director";
$user->save();
尝试以下代码首先获取用户详细信息,然后更新用户详细信息
$user = User::findOrFail(Auth::user()->id);
$user->role = "director";
$user->save();
试试这段代码我自己找到了一个解决方案
因为我必须在不同的控制器中使用“role”值,并且数据库表中没有列来保存该值,所以我必须使用session来存储该值
当用户在Auth\LoginController进行身份验证时,我在会话中设置角色值
function authenticated(Request $request, $user)
{
if(xxxxx)
{
if(xxxx)
{
Auth::user()->role = 'director';
}
else
{
Auth::user()->role = 'manager';
}
}
}
public function getRoleAttribute()
{
return Session::get('role', null);
}
public function setRoleAttribute($value)
{
Session::put('role', $value);
}
在App\User中
function authenticated(Request $request, $user)
{
if(xxxxx)
{
if(xxxx)
{
Auth::user()->role = 'director';
}
else
{
Auth::user()->role = 'manager';
}
}
}
public function getRoleAttribute()
{
return Session::get('role', null);
}
public function setRoleAttribute($value)
{
Session::put('role', $value);
}
现在,我可以使用以下代码从任何地方访问角色值
Auth::user()->role
我自己找到了解决办法
因为我必须在不同的控制器中使用“role”值,并且数据库表中没有列来保存该值,所以我必须使用session来存储该值
当用户在Auth\LoginController进行身份验证时,我在会话中设置角色值
function authenticated(Request $request, $user)
{
if(xxxxx)
{
if(xxxx)
{
Auth::user()->role = 'director';
}
else
{
Auth::user()->role = 'manager';
}
}
}
public function getRoleAttribute()
{
return Session::get('role', null);
}
public function setRoleAttribute($value)
{
Session::put('role', $value);
}
在App\User中
function authenticated(Request $request, $user)
{
if(xxxxx)
{
if(xxxx)
{
Auth::user()->role = 'director';
}
else
{
Auth::user()->role = 'manager';
}
}
}
public function getRoleAttribute()
{
return Session::get('role', null);
}
public function setRoleAttribute($value)
{
Session::put('role', $value);
}
现在,我可以使用以下代码从任何地方访问角色值
Auth::user()->role
谢谢您的回答,但我在用户表中没有“角色”列。角色是一个自定义属性,我需要在用户登录后设置它。我认为您可以通过在用户模型中使用一个变量来实现这一点,登录后您可以访问该变量并设置它的值,无论您想要什么。请参考此链接,这肯定会对您有所帮助,感谢您的回答,但我在用户表中没有“角色”列。角色是一个自定义属性,我需要在用户登录后设置它。我认为您可以通过在用户模型中使用一个变量来实现这一点。登录后,您可以访问该变量并设置其值,无论您想要什么。请参考此链接。这肯定会帮助您收到确切的错误消息是什么?没有这一点,我们就无法真正帮助你。请发布错误消息的内容。当我尝试从控制器(Auth::user()->role)访问角色值时,我得到了“未定义的索引:role”您收到的确切错误消息是什么?没有这一点,我们就无法真正帮助你。请发布错误消息的内容。当我尝试从控制器(Auth::user()->role)访问角色值时,会得到“未定义索引:role”