laravel 使用自带的用户注册登录功能并修改登录方式
1,首先配置好数据库
修改.env 文件
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=feng_app DB_USERNAME=root DB_PASSWORD=123456
2,执行迁移
php artisan migrate
3,生成路由,控制器,视图文件
php artisan make:auth
4,测试是否生成成功
http://your-site/login
5,修改登录方式,使用name字段登录,而不是email。
方式1,修改文件Illuminate\Foundation\Auth\AuthenticatesUsers
vendor\laravel\framework\src\Illuminate\Foundation\Auth\AuthenticatesUsers public function username() { // return 'email'; retrun 'name'; }
修改视图文件resources/views/auth/login.blade.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | <form class = "form-horizontal" method= "POST" action= "{{ route('login') }}" > {{ csrf_field() }} <div class = "form-group{{ $errors->has('name') ? ' has-error' : '' }}" > <label for = "name" class = "col-md-4 control-label" >name</label> <div class = "col-md-6" > <input id= "name" type= "name" class = "form-control" name= "name" value= "{{ old('name') }}" required autofocus> @ if ($errors->has( 'name' )) <span class = "help-block" > <strong>{{ $errors->first( 'name' ) }}</strong> </span> @endif </div> </div> <div class = "form-group{{ $errors->has('password') ? ' has-error' : '' }}" > <label for = "password" class = "col-md-4 control-label" >Password</label> <div class = "col-md-6" > <input id= "password" type= "password" class = "form-control" name= "password" required> @ if ($errors->has( 'password' )) <span class = "help-block" > <strong>{{ $errors->first( 'password' ) }}</strong> </span> @endif </div> </div> <div class = "form-group" > <div class = "col-md-6 col-md-offset-4" > <div class = "checkbox" > <label> <input type= "checkbox" name= "remember" {{ old( 'remember' ) ? 'checked' : '' }}> Remember Me </label> </div> </div> </div> <div class = "form-group" > <div class = "col-md-8 col-md-offset-4" > <button type= "submit" class = "btn btn-primary" > Login </button> <a class = "btn btn-link" href= "{{ route('password.request') }}" > Forgot Your Password? </a> </div> </div> </form> |
方式2
修改控制器文件,重写username() 方法
public function username() { return 'name'; }
6,修改注册控制器
namespace App\Http\Controllers\Auth;
use App\User;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Support\Facades\DB;
.......
protected function validator(array $data) { $mobile=$data['name']; $sms_code=DB::select("select sms_code from sms where phone=? order by id desc limit 1",[$mobile]); return Validator::make($data, [ 'name' => 'required|string|max:255', // 'email' => 'required|string|email|max:255|unique:users', 'password' => 'required|string|min:6|confirmed', 'tcode' => 'required|string|max:25', 'code' => [ 'required', 'string', 'max:25', function($attribute, $value, $fail)use($sms_code) { $sms=intval($sms_code[0]->sms_code); if ($value!= $sms) { return $fail($value.'验证码错误'.$sms); } }, ], ]); } /** * Create a new user instance after a valid registration. * * @param array $data * @return \App\User */ protected function create(array $data) { return User::create([ 'name' => $data['name'], //'email' => $data['email'], 'password' => bcrypt($data['password']), 'tcode' => $data['tcode'] ]); }
修改视图文件
@extends('layouts.app') @section('content') <div class="container"> <div class="row"> <div class="col-md-8 col-md-offset-2"> <div class="panel panel-default"> <div class="panel-heading">用户注册</div> <div class="panel-body"> <form class="form-horizontal" method="POST" action="{{ route('register') }}"> {{ csrf_field() }} <div class="form-group{{ $errors->has('name') ? ' has-error' : '' }}"> <label for="name" class="col-md-4 control-label">手机号</label> <div class="col-md-6"> <input id="name" type="text" class="form-control" name="name" value="{{ old('tcode') }}" required autofocus> @if ($errors->has('name')) <span class="help-block"> <strong>{{ $errors->first('name') }}</strong> </span> @endif </div> </div> <div class="form-group"> <label class="col-md-4 control-label">验证码</label> <div class="col-md-4"> <input id="code" type="text" class="form-control" name="code" value="{{ old('code') }}" required> @if ($errors->has('code')) <span class="help-block"> <strong>{{ $errors->first('code') }}</strong> </span> @endif </div> <div class="col-md-2"> <button type="button" class="btn btn-primary" id="GetVerify" onclick="get_verify()"> 发送验证码 </button> </div> </div> <div class="form-group{{ $errors->has('password') ? ' has-error' : '' }}"> <label for="password" class="col-md-4 control-label">密码</label> <div class="col-md-6"> <input id="password" type="password" class="form-control" name="password" required> @if ($errors->has('password')) <span class="help-block"> <strong>{{ $errors->first('password') }}</strong> </span> @endif </div> </div> <div class="form-group"> <label for="password-confirm" class="col-md-4 control-label">再次输入密码</label> <div class="col-md-6"> <input id="password-confirm" type="password" class="form-control" name="password_confirmation" required> </div> </div> <div class="form-group{{ $errors->has('tcode') ? ' has-error' : '' }}"> <label class="col-md-4 control-label">推荐码</label> <div class="col-md-4"> <input id="tcode" type="text" class="form-control" name="tcode" value="{{ old('tcode') }}" required> <span class="help-block"> <strong></strong> </span> </div> </div> <div class="form-group"> <div class="col-md-6 col-md-offset-4"> <button type="submit" class="btn btn-primary"> Register </button> </div> </div> </form> </div> </div> </div> </div> </div> @endsection <script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js"></script> <script type="text/javascript"> <!-- var times = 120; var isinerval; function get_verify() { var mobile = $("#name").val(); var partten = /^1[3-9]\d{9}$/; if(!partten.test(mobile)){ alert("请输入正确的手机号码"); $('#name').focus(); return false; } $.get("/sms",{ mobile: mobile }, function(data){ if(data=="0") { $("#mobile_send").html(mobile); $("#mobile_div").css("display","none"); $("#mobile_send_div").css("display",""); times = 120; $("#GetVerify").css("display",""); $("#GetVerify").attr("disabled", true); isinerval = setInterval("CountDown()", 1000); } else if(data=="-1") { alert("你今天获取验证码次数已达到上限"); } else if(data=="-100") { $('#code').val(''); alert("验证码已失效,请点击图片验证码获取新的验证码!"); $('#code').focus(); } else if(data=="-101") { alert("验证码错误!"); $('#code').focus(); } else { alert("短信发送失败"); } }); } function CountDown() { if (times < 1) { $("#GetVerify").html("获取短信验证码").attr("disabled", false); $("#edit_mobile").css("display",""); clearInterval(isinerval); return; } $("#GetVerify").html(times+"秒后重获"); times--; } function edit_mobile() { $("#mobile_div").css("display",""); $("#mobile_send_div").css("display","none"); } //--> </script>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗