2后台超级管理员完善密码修改功能

Posted guduoduo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2后台超级管理员完善密码修改功能相关的知识,希望对你有一定的参考价值。

(1)添加路由(在admin.login中间件)

Route::any(\'pass\',\'IndexController@pass\');

(2) IndexController.php中添加pass方法

注意Input、Crypt、User的引用

先判断新密码是否符合要求以及确认密码,此时若错误,返回的是对象;

之后再查询数据库,判断原密码是否正确,此时错误返回的是字符串

use App\\Http\\Model\\User;
use Illuminate\\Support\\Facades\\Input;
use Validator;
use Crypt;

 

 1  public function pass()
 2     {
 3         if($input = Input::all()){
 4             //定义每个字段的要求
 5             $rules = [
 6                 \'password\'=>\'required|between:6,20|confirmed\', 
 7                 //不能为空;字符在6-20;与确认密码进行验证;
 8                 //修改pass.blade.php中确认密码的name,将 password_c改为password_confirmation
 9             ];
10             //重新定义错误信息,格式: \'字段.属性\'=>\'信息\'
11             $messages = [
12                 \'password.required\'=>\'新密码不能为空\', 
13                 \'password.between\'=>\'新密码6-20位\',
14                 \'password.confirmed\'=>\'新密码与确认密码不一致\'
15             ];
16             $validator = Validator::make($input,$rules,$messages);
17             //利用$validator进行验证,如果新密码与确认密码一致,将获取输入的原密码与数据库中的密码比较,若密码相等,将通过验证,更新为新密码
18             if($validator->passes()){
19                 $user = User::first();
20                 $pass = Crypt::decrypt($user->user_pass);
21                 if($pass==$input[\'password_o\']){
22                     $user->user_pass = Crypt::encrypt($input[\'password\']);
23                     $user->update();
24                     return back()->with(\'errors\',\'密码修改成功!\'); //为了方便,仍然用errors传递25                 }else{
26                     //若原密码错误,将返回一个变量到errors中,只是一个字符串
27                     return back()->with(\'errors\',\'原密码错误\');
28                 }
29             }else{
30                 //若原密码、确认密码没有通过验证,则利用withErrroes($validator)保存错误信息到errors对象中,并返回到pass.blade.php,所以pass.blade.php需要将其接收
31                 //dd($validator->errors()->all());
32                 return back()->withErrors($validator);
33             }
34 
35         }else{
36             return view(\'admin.pass\');
37         }
38         
39     }

 

(3)pass.blade.php接收错误信息

count($errors)返回数组中元素的个数或是类的属性的个数,如若为字符串返回1;

大于0表明有错误返回,is_object()判断变量是否为对象,是则进行遍历,否则直接输出信息

在<h3>修改密码</h3>后面

 

        @if(count($errors)>0)
        <div class="mark">
            @if(is_object($errors))
                @foreach($errors->all() as $error)
                <p>{{$error}}</p>
                @endforeach
            @else
                <p>{{$errors}}</p>
            @endif
        </div>
     @endif

(4)修改index.blade.php中修改密码按钮

<li><a href="{{url(\'admin/pass\')}}" target="main">修改密码</a></li>

验证:

首先将新密码与确认密码故意输错

 

再次输入新密码与确认密码符合要求,将原密码输错

再次全部输入正确

 

以上是关于2后台超级管理员完善密码修改功能的主要内容,如果未能解决你的问题,请参考以下文章

电信光猫关了远程管理,超级密码仍然不断被改以及手机上网需要验证

懂PHP的进来,服务器在我手上,如何找到后台超级管理员帐号密码

进销存系统_用户信息更新&密码修改

进销存系统_用户信息更新&密码修改

项目进度

Django后台管理系统