我用的是laravel自带的用户登录注册 如何做出和lavavist一样的修改密码

这个问题已经困扰我很久了

做出的效果应该和laravist登录以后的(修改密码)功能一样

需要输入一次原密码和两次新密码就可以完成密码修改操作

我看的doc是用邮箱跳转

客户肯定不会同意

这样对用户太不友好了

在 laravist 的实现,大概是这样的思路, UpdatePasswordRequest.php:

public function rules()
    {
        return [
            'old_password'          => 'required|min:6',
            'password'              => 'required|min:6|confirmed|different:old_password',
            'password_confirmation' => 'required|min:6',
        ];
    }

控制器的大概是这样:

  public function updatePassword(Requests\UpdatePasswordRequest $request)
    {
             $user = Auth::user();
        if ( Hash::check($request->get('old_password'), $user->password) ) {

             $user->password = bcrypt($request->get('password'));
             $user->save();
            return redirect()->back()->with('password_update', '成功修改密码');
        }

        return redirect()->back()->with('password_update_failed', '修改密码失败');
    }

细节你自己修正一下,比如是否使用 Request....

JellyBool

在 laravist 的实现,大概是这样的思路, UpdatePasswordRequest.php:

public function rules()
    {
        return [
            'old_password'          => 'required|min:6',
            'password'              => 'required|min:6|confirmed|different:old_password',
            'password_confirmation' => 'required|min:6',
        ];
    }

控制器的大概是这样:

  public function updatePassword(Requests\UpdatePasswordRequest $request)
    {
             $user = Auth::user();
        if ( Hash::check($request->get('old_password'), $user->password) ) {

             $user->password = bcrypt($request->get('password'));
             $user->save();
            return redirect()->back()->with('password_update', '成功修改密码');
        }

        return redirect()->back()->with('password_update_failed', '修改密码失败');
    }

细节你自己修正一下,比如是否使用 Request…

keikeizhang

@JellyBool 我用的是laravel自带的注册登录 也就是auth

如果是自己写的应该秒修改完毕的

但是学习laravel么 就得都laravel搞定

我研读一下代码 看看有什么思路没

keikeizhang

@JellyBool 原谅我问一个比较小白的问题

我对rules()是干嘛有印象 但是真不想起来是什么目录 用来干嘛的

大概是验证input上来的数据?

貌似大概知道是什么视频说过

是不是搭建社区那个教程

应该是

JellyBool

如果我没理解错你的问题,第一个回复就可以完成修改密码(laravist 就是自带的 auth,改密码跟注册登录没啥关系吧)。关于第二个 rules ,基础教程就有。就是表单验证用的

keikeizhang

@JellyBool 我进他自己瞎琢磨一天 auth::user()->password调密码 感觉自己好二
我真不知道改user表的password为啥这么费劲,auth用起来挺方便的。

rules写到后面已经想起来了,但是没想删了以前敲的话。

对了,再次安利你的网站到V站了

keikeizhang

@keikeizhang

Auth::uer() 还需要引入么

keikeizhang

@JellyBool Auth::uer() 还需要引入么

JellyBool
use Auth;

或者:

\Auth::user();
keikeizhang

@JellyBool 我是不是还需要引入一下哈系

JellyBool

额。。。必然啊,你看过 oop 的系列了么

keikeizhang

@JellyBool 没有看到 , 目前API 基础 社区创建 看完了 密码修改成功了 但是貌似新密码我自己都不能登录了

keikeizhang

深深的伤害了我

JellyBool

新的密码怎么会登录不了,你手动 check 一下你密码是不是对的?

哈哈哈,不错不错

keikeizhang

@JellyBool
我这边出现一个小问题 , 前端的哥们把/home给要走了
但是出现登录跳转不准确的问题
后来我们把/home都取消了
但是现在还是出现会跳转到/home的情况
但是route里没有定义/home
所以直接报错
又找不到原因
但是route里有一些/home的东西
我不知道是不是有什么关系
是不是有什么坑

JellyBool

AuthController 配置:

public $redirectPath='/' ; // 登录之后的跳转路由

有可能每个版本有细微的差别,比如有可能是 $redirectTo

keikeizhang

@JellyBool RedirectIfAuthenticated.php

我修改的是这个文件

return redirect(’/admin’);

38行代码有一个/home 我给改到自己需要的跳转

搞定

zmecust

@JellyBool Hi, Jelly! 我照着上面的方法重置密码了,新密码也写进数据库了,但是我用新密码登不进去,旧密码也不行。后来我将 user>password=bcrypt(user->password = bcrypt(request->get(‘password’)); 的bcrypt去掉,重新重置密码,之后用新密码才能登进去,这是为啥?

JellyBool 回复 zmecust

你看看这个$request->get('password')过来是什么数据,你直接存进去试试,可能后面版本的 laravel 会自动加密

zmecust 回复 JellyBool

谢谢你的回复,已经知道啦,原来我已经在User Model 中设置了setPasswordAttribute。dd数据是一个好习惯,再次表示感谢

JellyBool 回复 zmecust

没得事,有问题的话,在这里认真发帖问就好。能解决的我都会认真回复

keikeizhang 回复 JellyBool

Jelly , 你累不