zoukankan      html  css  js  c++  java
  • laravel实践13.Auth方法验证用户登录

    <?php
    
    namespace AppHttpControllers;
    .
    .
    .
    use Auth;
    
    class SessionsController extends Controller
    {
        .
        .
        .
        public function store(Request $request)
        {
           $credentials = $this->validate($request, [
               'email' => 'required|email|max:255',
               'password' => 'required'
           ]);
    
           if (Auth::attempt($credentials)) {
               // 登录成功后的相关操作
           } else {
               // 登录失败后的相关操作
           }
    
           return;
        }
    }

    attempt 方法会接收一个数组来作为第一个参数,该参数提供的值将用于寻找数据库中的用户数据。逻辑如下:

      1. 使用 email 字段的值在数据库中查找;
      2. 如果用户被找到:
        1). 先将传参的 password 值进行哈希加密,然后与数据库中 password 字段中已加密的密码进行匹配;
        2). 如果匹配后两个值完全一致,会创建一个『会话』给通过认证的用户。会话在创建的同时,也会种下一个名为 laravel_session 的 HTTP Cookie,以此 Cookie 来记录用户登录状态,最终返回 true
        3). 如果匹配后两个值不一致,则返回 false
      3. 如果用户未找到,则返回 false

    登录验证后的重定向:

     if (Auth::attempt($credentials)) {
               session()->flash('success', '登录成功!');
               return redirect()->route('users.show', [Auth::user()]);
           } else {
               session()->flash('danger', '很抱歉,您的邮箱和密码不匹配');
               return redirect()->back()->withInput();
           }

    return redirect()->back()->withInput(); 登录失败时redirect()->back返回表单提交页面,使用 withInput() 后模板里 old('email') 将能获取到上一次用户提交的内容,这样用户就无需再次输入邮箱等内容

  • 相关阅读:
    从读者角度来看Blog
    NDuiker项目第3天
    IssueVision的List控件源码分析
    测试一个网站的想法
    IssueVision的PaneCaption控件源码分析
    技术研究的时候不要忘了“集成创新”
    人脸识别活体检测之张张嘴和眨眨眼
    jsp>Session 小强斋
    jsp>Request对象 小强斋
    jsp>四种作用域 小强斋
  • 原文地址:https://www.cnblogs.com/itwatcher/p/12108172.html
Copyright © 2011-2022 走看看