关键词搜索

源码搜索 ×
×

Laravel文档阅读笔记-Custom Authentication Login And Registration Using Laravel 8

发布2022-07-02浏览502次

详情内容

博文主要是使用Laravel8创建自定义登录和注册。

使用传统简单方法创建自定义用户登录、注册、面板页面。

案例

有如下步骤:

①创建Laravel应用;

连接MySQL数据库;

③设置auth的Controller;

④创建auth路由;

⑤创建auth的blade视图文件;

⑥启动Laravel服务。

创建Laravel应用

安装陪配置好composer后,使用下面的命令创建Laravel项目。

composer create-project --prefer-dist laravel/laravel laravel_new 

进入创建应用的目录。

cd laravel_new 

连接数据库

让Laravel连接mysql数据库,打开.env配置文件,修改数据库名,用户名,密码:

  1. DB_CONNECTION=mysql
  2. DB_HOST=127.0.0.1
  3. DB_PORT=3306
  4. DB_DATABASE=database_name
  5. DB_USERNAME=database_user_name
  6. DB_PASSWORD=database_password

Laravel提供了默认的用户模型和迁移文件,所以可以用php命令通过默认给的迁移文件创建mysql表。

php artisan migrate 

设置权限Controller

调用下面的命令,创建Controller

php artisan make:controller CustomAuthController

在app\Http\Controllers\CustomAuthController.php替换成如下代码:

  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use Hash;
  5. use Session;
  6. use App\Models\User;
  7. use Illuminate\Support\Facades\Auth;
  8. class CustomAuthController extends Controller
  9. {
  10. public function index()
  11. {
  12. return view('auth.login');
  13. }
  14. public function customLogin(Request $request)
  15. {
  16. $request->validate([
  17. 'email' => 'required',
  18. 'password' => 'required',
  19. ]);
  20. $credentials = $request->only('email', 'password');
  21. if (Auth::attempt($credentials)) {
  22. return redirect()->intended('dashboard')
  23. ->withSuccess('Signed in');
  24. }
  25. return redirect("login")->withSuccess('Login details are not valid');
  26. }
  27. public function registration()
  28. {
  29. return view('auth.registration');
  30. }
  31. public function customRegistration(Request $request)
  32. {
  33. $request->validate([
  34. 'name' => 'required',
  35. 'email' => 'required|email|unique:users',
  36. 'password' => 'required|min:6',
  37. ]);
  38. $data = $request->all();
  39. $check = $this->create($data);
  40. return redirect("dashboard")->withSuccess('You have signed-in');
  41. }
  42. public function create(array $data)
  43. {
  44. return User::create([
  45. 'name' => $data['name'],
  46. 'email' => $data['email'],
  47. 'password' => Hash::make($data['password'])
  48. ]);
  49. }
  50. public function dashboard()
  51. {
  52. if(Auth::check()){
  53. return view('dashboard');
  54. }
  55. return redirect("login")->withSuccess('You are not allowed to access');
  56. }
  57. public function signOut() {
  58. Session::flush();
  59. Auth::logout();
  60. return Redirect('login');
  61. }
  62. }

创建Auth路由

在routes/web.php中添加如下代码:

  1. <?php
  2. use Illuminate\Support\Facades\Route;
  3. use App\Http\Controllers\CustomAuthController;
  4. /*
  5. |--------------------------------------------------------------------------
  6. | Web Routes
  7. |--------------------------------------------------------------------------
  8. */
  9. Route::get('dashboard', [CustomAuthController::class, 'dashboard']);
  10. Route::get('login', [CustomAuthController::class, 'index'])->name('login');
  11. Route::post('custom-login', [CustomAuthController::class, 'customLogin'])->name('login.custom');
  12. Route::get('registration', [CustomAuthController::class, 'registration'])->name('register-user');
  13. Route::post('custom-registration', [CustomAuthController::class, 'customRegistration'])->name('register.custom');
  14. Route::get('signout', [CustomAuthController::class, 'signOut'])->name('signout');

创建auth的blade视图文件

在resources/views中创建login.blade.php:

  1. @extends('app')
  2. @section('content')
  3. <main class="login-form mt-5">
  4. <div class="cotainer">
  5. <div class="row justify-content-center">
  6. <div class="col-md-4">
  7. <div class="card">
  8. <h3 class="card-header text-center">Login</h3>
  9. <div class="card-body">
  10. <form method="POST" action="{{ route('login.custom') }}">
  11. @csrf
  12. <div class="form-group mb-3">
  13. <input type="text" placeholder="Email" id="email" class="form-control" name="email" required
  14. autofocus>
  15. @if ($errors->has('email'))
  16. <span class="text-danger">{{ $errors->first('email') }}</span>
  17. @endif
  18. </div>
  19. <div class="form-group mb-3">
  20. <input type="password" placeholder="Password" id="password" class="form-control" name="password" required>
  21. @if ($errors->has('password'))
  22. <span class="text-danger">{{ $errors->first('password') }}</span>
  23. @endif
  24. </div>
  25. <div class="form-group mb-3">
  26. <div class="checkbox">
  27. <label>
  28. <input type="checkbox" name="remember"> Remember Me
  29. </label>
  30. </div>
  31. </div>
  32. <div class="d-grid mx-auto">
  33. <button type="submit" class="btn btn-dark btn-block">Signin</button>
  34. </div>
  35. </form>
  36. </div>
  37. </div>
  38. </div>
  39. </div>
  40. </div>
  41. </main>
  42. @endsection

随后创建registration.blade.php在resources/views/auth目录下:

  1. @extends('app')
  2. @section('content')
  3. <main class="signup-form mt-5">
  4. <div class="cotainer">
  5. <div class="row justify-content-center">
  6. <div class="col-md-4">
  7. <div class="card">
  8. <h3 class="card-header text-center">Registration</h3>
  9. <div class="card-body">
  10. <form action="{{ route('register.custom') }}" method="POST">
  11. @csrf
  12. <div class="form-group mb-3">
  13. <input type="text" placeholder="Name" id="name" class="form-control" name="name"
  14. required autofocus>
  15. @if ($errors->has('name'))
  16. <span class="text-danger">{{ $errors->first('name') }}</span>
  17. @endif
  18. </div>
  19. <div class="form-group mb-3">
  20. <input type="text" placeholder="Email" id="email_address" class="form-control"
  21. name="email" required autofocus>
  22. @if ($errors->has('email'))
  23. <span class="text-danger">{{ $errors->first('email') }}</span>
  24. @endif
  25. </div>
  26. <div class="form-group mb-3">
  27. <input type="password" placeholder="Password" id="password" class="form-control"
  28. name="password" required>
  29. @if ($errors->has('password'))
  30. <span class="text-danger">{{ $errors->first('password') }}</span>
  31. @endif
  32. </div>
  33. <div class="form-group mb-3">
  34. <div class="checkbox">
  35. <label><input type="checkbox" name="remember"> Remember Me</label>
  36. </div>
  37. </div>
  38. <div class="d-grid mx-auto">
  39. <button type="submit" class="btn btn-dark btn-block">Sign up</button>
  40. </div>
  41. </form>
  42. </div>
  43. </div>
  44. </div>
  45. </div>
  46. </div>
  47. </main>
  48. @endsection

下一步在resources/views中创建dashborad.blade.php文件:

  1. @extends('layouts.app')
  2. @section('content')
  3. <nav class="navbar navbar-light navbar-expand-lg mb-5" style="background-color: #e3f2fd;">
  4. <div class="container">
  5. <a class="navbar-brand mr-auto" href="#">Example</a>
  6. <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav"
  7. aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
  8. <span class="navbar-toggler-icon"></span>
  9. </button>
  10. <div class="collapse navbar-collapse" id="navbarNav">
  11. <ul class="navbar-nav">
  12. @guest
  13. <li class="nav-item">
  14. <a class="nav-link" href="{{ route('login') }}">Login</a>
  15. </li>
  16. <li class="nav-item">
  17. <a class="nav-link" href="{{ route('register-user') }}">Register</a>
  18. </li>
  19. @else
  20. <li class="nav-item">
  21. <a class="nav-link" href="{{ route('signout') }}">Logout</a>
  22. </li>
  23. @endguest
  24. </ul>
  25. </div>
  26. </div>
  27. </nav>
  28. @endsection

最后创建resources/views/app.blade.php文件:

  1. <!DOCTYPE html>
  2. <html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1">
  7. <title>{{config('app.name','LSAPP')}}</title>
  8. <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta3/dist/css/bootstrap.min.css" rel="stylesheet">
  9. </head>
  10. <body>
  11. @yield('content')
  12. </body>

运行laravel服务

php artisan serve 

注册URL和登录URL分别为:

  1. http://127.0.0.1:8000/registration
  2. http://127.0.0.1:8000/login

输出:

 

 

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载