简体   繁体   English

在 Laravel 8 中存储数据后如何保持会话?

[英]How to keep session after storing data in Laravel 8?

I'm new to Laravel.我是 Laravel 的新手。 I have created custom Change Password in Laravel 8 using Livewire.我使用 Livewire 在 Laravel 8 中创建了自定义更改密码。 But, after succeeded in updating the user password, my session is expired and redirected to login page.但是,在成功更新用户密码后,我的会话已过期并重定向到登录页面。 So, the question is how to keep the session alive and redirect to the current page?那么,问题是如何保持会话活动并重定向到当前页面?

Here's my code:这是我的代码:

ChangeUserPassword.php更改用户密码.php

class ChangeUserPassword extends Component
{
    public $oldPassword;
    public $newPassword;
    public $confirmPassword;

    public function render()
    {
        return view('livewire.auth.change-user-password');
    }

    public function changePassword()
    {
        $this->validate([
            'oldPassword' => 'required',
            'newPassword' => ['required', Password::min(8)
            ->letters()
            ->mixedCase()
            ->numbers()
            ->symbols()
            // ->uncompromised()
            ],
            'confirmPassword' => 'required|min:8|same:newPassword'
        ]);

        $user = User::find(auth()->user()->id);
        if (Hash::check($this->oldPassword, $user->password)) {
            $user->update([
                'password' => Hash::make($this->newPassword),
                'updated_at' => Carbon::now()->toDateTimeString()
            ]);
            $this->emit('showAlert', [
                'msg' => 'Your password has been successfully changed.'
            ]);
            return redirect()->route('user.changepassword');
        } else {
            $this->emit('showAlertError', [
                'msg' => 'Old password does not match.'
            ]);
        }
    }
}

change-user-password.blade.php更改用户密码.blade.php

<div class="col-md-12">
    <div class="card">
        <div class="card-body">
            <h4 class="card-title ml-2">Change Password</h4>
            <form wire:submit.prevent="changePassword" role="form">
                @csrf
                <div class="row">
                    <div class="form-group col-md-4">
                        <label for="oldPassword" class="form-label">Old Password<span style="color: red"> *</span></label>
                        <input class="form-control @error('oldPassword') is-invalid @enderror" wire:model="oldPassword" name="oldPassword" id="oldPassword" type="password" />
                        @error('oldPassword')
                            <small id="helpId" class="text-danger">{{ $message }}</small>
                        @enderror
                    </div>
                    <div class="form-group col-md-4">
                        <label for="newPassword" class="form-label">New Password<span style="color: red"> *</span></label>
                        <input class="form-control @error('newPassword') is-invalid @enderror" wire:model="newPassword" name="newPassword" id="newPassword" type="password" />
                        @error('newPassword')
                            <small id="helpId" class="text-danger">{{ $message }}</small>
                        @enderror
                    </div>
                    <div class="form-group col-md-4">
                        <label for="confirmPassword" class="form-label">Confirm Password<span style="color: red"> *</span></label>
                        <input class="form-control @error('confirmPassword') is-invalid @enderror" wire:model="confirmPassword" name="confirmPassword" id="confirmPassword" type="password" />
                        @error('confirmPassword')
                            <small id="helpId" class="text-danger">{{ $message }}</small>
                        @enderror
                    </div>
                    <div class="form-group">
                        <button type="submit" class="btn btn-primary pull-right" 
                            wire:loading.attr="disabled">Save</button>
                        {{-- <div wire:loading>
                            <img style="width: 25px;" src="{{ asset('assets/images/spinner-small.gif') }}" alt="Loading">
                        </div> --}}
                    </div>
                </div>
            </form>
        </div>
    </div>
</div>


<script>
    document.addEventListener('livewire:load', function (e) {
        e.preventDefault()
    })
</script>

Any suggestion would really help.任何建议都会真正有帮助。 Thanks.谢谢。

Authenticate the user again after updating the password更新密码后再次验证用户

if (Hash::check($this->oldPassword, $user->password)) {
   $user->update([
       'password' => Hash::make($this->newPassword),
       'updated_at' => Carbon::now()->toDateTimeString()
   ]);
   $this->emit('showAlert', [
       'msg' => 'Your password has been successfully changed.'
   ]);
   if(Auth::attempt(['email'=>$user->email, 'password'=>$this->newPassword])){
       $request->session()->regenerate();    
       return redirect()->intended('user.changepassword');
   }
} else {
   $this->emit('showAlertError', [
       'msg' => 'Old password does not match.'
   ]);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM