【问题标题】:Laravel user update problemsLaravel 用户更新问题
【发布时间】:2017-03-29 23:51:17
【问题描述】:

会尽我所能把这一点说清楚。

为了使用 laravel 的登录和注册功能,我推出了一个 make Auth 调用,后来只是使用模板来提供我想要的需求。

  1. 如果用户是管理员,他/她可以注册一个新用户。

    public function openNewUser(){
    return view('auth.register');
    

    }

    注意。部分待更新。

    public function registerNewUser(Request $request){
            $this->validate($request,[
                'email' => 'required|email|unique:users',
                'name' => 'required|max:120',
                'password' => 'required|min:4|confirmed']);
    
            $user = new User();
    
            $user->name = $request->name;
            $user->email = $request->email;
            $user->password = encrypt($request->password);
    
            if (Gate::denies('register-user')) {
                return redirect()->back();
            }
    
            $user->save();
            return view('home');
      }
    
    1. 问题 1 - 我还想更新 user ,这会产生问题。密码输入返回空字段,我理解。当我尝试更改它时,确认密码总是不匹配,即使它们相同。当我将其留空时,它也不起作用,因为需要填写该字段。我将它们从表格中删除,并尝试我是否只能编辑电子邮件,但只是没有用。

公共函数 userUpdate (请求 $request,$user_id) {

  $this->validate($request,[
      'email' => 'required|email',
      'name' => 'required|max:120',
      'password' => 'required|min:4|confirmed']);
       $user = new User();
         $user->name = $request->name;
         $user->email = $request->email;
         $user->password = encrypt($request->password);

    if (Gate::allows('register-user')) {
          $user->save();

        $user->roles()->attach($request->roles);
        return redirect()->route('view_users');
    }elseif (Gate::denies('register-user')) {
        if (Auth::id() == $user_id) {
            $user->save();

            $user->roles()->attach($request->roles);
            return redirect()->route('view_users');
        }else{
            return redirect()->back();
        }
    }

}

问题 2。我刚刚意识到我在新注册时所做的所有登录都给出了这些凭据与我们的记录不匹配。即使凭据在那里并且已正确注册。 我正在使用 laravel 提供的登录名,但我创建了自己的注册。

请问我怎样才能编辑和更新我的用户,并且还能够在注册后登录

【问题讨论】:

  • 疯狂猜测:您是否有可能同时更改了您的应用程序密钥 (php artisan key:generate) ?
  • @dbr 不,我没有更改密钥,一切看起来都很好,应该可以正常工作吗?

标签: laravel authentication


【解决方案1】:

你使用的是什么版本的 Laravel?

这是我在RegisterController.php 中的(v5.3)register() 方法,至少部分用于注册:

public function register(Request $request)
{   
...
// save and login user
$user = $this->create($request->all());
$this->guard()->login($user);
...
}
...
protected function create(array $data)
{
    return User::create([
        'name' => $data['name'],
        'lastname' => $data['lastname'],
        'phone' => $data['phone'],
        'email' => $data['email'],
        'password' => bcrypt($data['password']),
    ]);
}

以及来自LoginController.phplogin() 方法

public function login(Request $request) 
{
$credentials = $this->credentials($request);
...
if ($this->guard()->attempt($credentials, $request->has('remember'))) {
      return $this->sendLoginResponse($request);
   }
}

希望我没有错过任何东西。 请记住,从 5.2 版开始,这里的情况发生了变化。

【讨论】:

  • 虽然我创建了自己的用户,但我正在使用 Laravel 身份验证登录,所以我实际上并没有编写自己的登录代码。 ________ 但是在我写注册码之前发生的奇怪的事情是我用 Laravel 注册方法注册了一个用户。更改代码后,我仍然可以使用我首先创建的用户登录,但我使用我的代码创建的所有用户都已在数据库中注册,但我无法使用他们登录
【解决方案2】:

我发现出了什么问题,由于我使用 Laravel 的登录名,我的注册必须使用 bycrypt 进行加密,这是 Laravel 注册所使用的,但是我在创建自己的注册时使用了加密,所以在登录。(请记住,我使用的是 Laravel 登录而不是我自己的书面登录)。我希望这可以帮助某人

【讨论】:

    猜你喜欢
    • 2018-10-09
    • 2017-01-17
    • 1970-01-01
    • 2012-08-08
    • 2020-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-06
    相关资源
    最近更新 更多