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
<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>