laravel框架之自帶登錄&註冊
//控制器層
1 <?php 2 3 namespace App\Http\Controllers\admin; 4 5 use App\Models\admin\Users; 6 use Illuminate\Http\Request as request; 7 use App\Http\Controllers\Controller; 8 use App\Http\Requests\register; 9 use Illuminate\Support\Facades\DB; 10 11 class UserController extends Controller 12 { 13 public function login() 14 { 15 return view('admin.login'); 16 } 17 public function login_do(request $request){ 18 $model = new Users(); 19 if ($model->lo($request->only('email','password'))){ 20 return redirect()->route('admin.showlist')->with('msg','登錄成功'); 21 } 22 } 23 public function register() 24 { 25 return view('admin.register'); 26 } 27 public function register_do(register $request) 28 { 29 $model = new Users(); 30 if ($model->zhuce($request->all())){ 31 return redirect()->route('admin.login')->with('msg','用戶已註冊成功'); 32 } 33 }
//模型層
1 <?php 2 3 namespace App\Models\admin; 4 5 use Illuminate\Database\Eloquent\Model; 6 use Illuminate\Foundation\Auth\User as Authors; 7 8 class Users extends Authors 9 { 10 public $table = "users"; 11 public function zhuce($data) 12 { 13 $this->username =$data['username']; 14 $this->password =bcrypt($data['password']); 15 $this->email =$data['email']; 16 return $this->save(); 17 } 18 public function lo($data) 19 { 20 if (auth()->attempt($data)){ 21 return auth()->user(); 22 } 23 } 24 }
//視圖層
//註冊頁面
1 @extends('layouts.app') 2 @section('title','註冊頁面') 3 @section('content') 4 <div class="container"> 5 <div class="row justify-content-center"> 6 <div class="col-md-8"> 7 <div class="card"> 8 <div class="card-header">{{ __('Register') }}</div> 9 10 <div class="card-body"> 11 <form method="POST" action="{{ route('admin.register_do') }}" aria-label="{{ __('Register') }}"> 12 @csrf 13 14 <div class="form-group row"> 15 <label for="username" class="col-md-4 col-form-label text-md-right">{{ __('UserName') }}</label> 16 17 <div class="col-md-6"> 18 <input id="username" type="text" class="form-control{{ $errors->has('username') ? ' is-invalid' : '' }}" name="username" value="{{ old('username') }}" required autofocus> 19 20 @if ($errors->has('username')) 21 <span class="invalid-feedback" role="alert"> 22 <strong>{{ $errors->first('username') }}</strong> 23 </span> 24 @endif 25 </div> 26 </div> 27 28 <div class="form-group row"> 29 <label for="email" class="col-md-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label> 30 31 <div class="col-md-6"> 32 <input id="email" type="email" class="form-control{{ $errors->has('email') ? ' is-invalid' : '' }}" name="email" value="{{ old('email') }}" required> 33 34 @if ($errors->has('email')) 35 <span class="invalid-feedback" role="alert"> 36 <strong>{{ $errors->first('email') }}</strong> 37 </span> 38 @endif 39 </div> 40 </div> 41 42 <div class="form-group row"> 43 <label for="password" class="col-md-4 col-form-label text-md-right">{{ __('Password') }}</label> 44 45 <div class="col-md-6"> 46 <input id="password" type="password" class="form-control{{ $errors->has('password') ? ' is-invalid' : '' }}" name="password" required> 47 48 @if ($errors->has('password')) 49 <span class="invalid-feedback" role="alert"> 50 <strong>{{ $errors->first('password') }}</strong> 51 </span> 52 @endif 53 </div> 54 </div> 55 56 <div class="form-group row"> 57 <label for="password-confirm" class="col-md-4 col-form-label text-md-right">{{ __('Confirm Password') }}</label> 58 59 <div class="col-md-6"> 60 <input id="password-confirm" type="password" class="form-control" name="password_confirmation" required> 61 </div> 62 </div> 63 64 <div class="form-group row mb-0"> 65 <div class="col-md-6 offset-md-4"> 66 <button type="submit" class="btn btn-primary"> 67 {{ __('Register') }} 68 </button> 69 </div> 70 </div> 71 </form> 72 </div> 73 </div> 74 </div> 75 </div> 76 </div> 77 @endsection 78 //登錄頁面 79 @extends('layouts.app') 80 @section('title','登錄頁面') 81 @section('content') 82 <div class="container"> 83 <div class="row justify-content-center"> 84 <div class="col-md-8"> 85 <div class="card"> 86 <div class="card-header">{{ session('msg' ?? 'Login') }}</div> 87 88 <div class="card-body"> 89 <form method="POST" action="{{ route('admin.login_do') }}" aria-label="{{ __('Login') }}"> 90 @csrf 91 92 <div class="form-group row"> 93 <label for="email" class="col-sm-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label> 94 95 <div class="col-md-6"> 96 <input id="email" type="email" class="form-control{{ $errors->has('email') ? ' is-invalid' : '' }}" name="email" value="{{ old('email') }}" required autofocus> 97 98 @if ($errors->has('email')) 99 <span class="invalid-feedback" role="alert"> 100 <strong>{{ $errors->first('email') }}</strong> 101 </span> 102 @endif 103 </div> 104 </div> 105 106 <div class="form-group row"> 107 <label for="password" class="col-md-4 col-form-label text-md-right">{{ __('Password') }}</label> 108 109 <div class="col-md-6"> 110 <input id="password" type="password" class="form-control{{ $errors->has('password') ? ' is-invalid' : '' }}" name="password" required> 111 112 @if ($errors->has('password')) 113 <span class="invalid-feedback" role="alert"> 114 <strong>{{ $errors->first('password') }}</strong> 115 </span> 116 @endif 117 </div> 118 </div> 119 120 <div class="form-group row"> 121 <div class="col-md-6 offset-md-4"> 122 <div class="form-check"> 123 <input class="form-check-input" type="checkbox" name="remember" id="remember" {{ old('remember') ? 'checked' : '' }}> 124 125 <label class="form-check-label" for="remember"> 126 {{ __('Remember Me') }} 127 </label> 128 </div> 129 </div> 130 </div> 131 132 <div class="form-group row mb-0"> 133 <div class="col-md-8 offset-md-4"> 134 <button type="submit" class="btn btn-primary"> 135 {{ __('Login') }} 136 </button> 137 138 <a class="btn btn-link" href="{{ route('password.request') }}"> 139 {{ __('Forgot Your Password?') }} 140 </a> 141 </div> 142 </div> 143 </form> 144 </div> 145 </div> 146 </div> 147 </div> 148 </div> 149 @endsection 150 151 //佈局頁面 layouts 152 <!DOCTYPE html> 153 <html lang="{{ str_replace('_', '-', app()->getLocale()) }}"> 154 <head> 155 <meta charset="utf-8"> 156 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 157 <meta name="viewport" content="width=device-width, initial-scale=1"> 158 159 <!-- CSRF Token --> 160 <meta name="csrf-token" content="{{ csrf_token() }}"> 161 162 <title>@yield('title')</title> 163 164 <!-- Scripts --> 165 <script src="{{ asset('js/app.js') }}" defer></script> 166 167 <!-- Fonts --> 168 <link rel="dns-prefetch" href="https://fonts.gstatic.com"> 169 <link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet" type="text/css"> 170 171 <!-- Styles --> 172 <link href="{{ asset('css/app.css') }}" rel="stylesheet"> 173 </head> 174 <body> 175 <div id="app"> 176 <nav class="navbar navbar-expand-md navbar-light navbar-laravel"> 177 <div class="container"> 178 <a class="navbar-brand" href="{{ url('/') }}"> 179 {{ config('app.name', 'Laravel') }} 180 </a> 181 <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="{{ __('Toggle navigation') }}"> 182 <span class="navbar-toggler-icon"></span> 183 </button> 184 185 <div class="collapse navbar-collapse" id="navbarSupportedContent"> 186 <!-- Left Side Of Navbar --> 187 <ul class="navbar-nav mr-auto"> 188 189 </ul> 190 191 <!-- Right Side Of Navbar --> 192 <ul class="navbar-nav ml-auto"> 193 <!-- Authentication Links --> 194 @guest 195 <li class="nav-item"> 196 <a class="nav-link" href="{{ route('admin.login') }}">{{ __('Login') }}</a> 197 </li> 198 <li class="nav-item"> 199 <a class="nav-link" href="{{ route('admin.register') }}">{{ __('Register') }}</a> 200 </li> 201 @else 202 <li class="nav-item dropdown"> 203 <a id="navbarDropdown" class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" v-pre> 204 {{ Auth::user()->name }} <span class="caret"></span> 205 </a> 206 207 <div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown"> 208 <a class="dropdown-item" href="{{ route('logout') }}" 209 onclick="event.preventDefault(); 210 document.getElementById('logout-form').submit();"> 211 {{ __('Logout') }} 212 </a> 213 214 <form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;"> 215 @csrf 216 </form> 217 </div> 218 </li> 219 @endguest 220 </ul> 221 </div> 222 </div> 223 </nav> 224 225 <main class="py-4"> 226 @yield('content') 227 </main> 228 </div> 229 </body> 230 </html>