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”