LARAVEL5 自定义登录

2023-11-23

我正在使用需要自定义登录的应用程序。

我必须遵循这个流程。

  1. 用户将进入登录页面。
  2. 用户提交登录页面。
  3. 应用程序将检查用户是否在数据库中 3.1(如果用户不在数据库中|会向第三方发送请求,检查是否登录成功) 3.2 如果用户在数据库中,则验证密码。

现在我已经为第三方完成了类,代码将像这样工作

$third = new Libraries\ThirdParty();
$third->login($username, $password);

$third->login如果登录成功则返回true。

现在的问题是如何链接这个逻辑。使用 laravel 预定义函数Auth::check()


当你安装 laravel 时,它会附带一个默认登录名,该登录名使用一个特征:

class AuthController extends Controller {

    use AuthenticatesAndRegistersUsers;

    /**
     * Create a new authentication controller instance.
     *
     * @param  \Illuminate\Contracts\Auth\Guard  $auth
     * @param  \Illuminate\Contracts\Auth\Registrar  $registrar
     * @return void
     */
    public function __construct(Guard $auth, Registrar $registrar)
    {
        $this->auth = $auth;
        $this->registrar = $registrar;

        $this->middleware('guest', ['except' => 'getLogout']);
    }

}

此类使用存储在以下位置的登录特征:vendor\laravel\framework\src\Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers.php

您可以覆盖此类中的方法以放置您自己的逻辑,例如在类中AuthController你可以定义一个新的:

function postLogin(){
   //your new logic for login
}

它会尊重你的功能而不是特征功能。 无论如何,背后的逻辑postLogin from auth trait is:

public function postLogin(Request $request)
    {
        $this->validate($request, [
            'email' => 'required|email', 'password' => 'required',
        ]);

        $credentials = $request->only('email', 'password');

        if ($this->auth->attempt($credentials, $request->has('remember')))
        { //this if validate if the user is on the database line 1
            return redirect()->intended($this->redirectPath());
            //this redirect if user is the db line 2
        }

        return redirect($this->loginPath())
                    ->withInput($request->only('email', 'remember'))
                    ->withErrors([
                        'email' => $this->getFailedLoginMessage(),
                    ]);
          //redirect again to login view with some errors line 3
    }

你可以做两件事:

  1. 编辑特征本身(不好的做法)放置你自己的逻辑
  2. 定义你自己的postLogin函数于AuthController并复制逻辑,但使用您自己的自定义逻辑进行编辑。

Edit更具体地表达你的观点:

  1. 用户将进入登录页面:您可以使用laravel为您提供的默认登录页面,也可以覆盖getLogin函数并重定向到您自己的视图。

  2. 用户提交登录页面:表单操作需要是:{{ url('/auth/login') }}或您选择的任何路线postLogin()

  3. 应用程序将检查用户是否在数据库中:在代码第 1 行中

    3.1(如果用户不在数据库中|会向第三方发送请求并检查是否登录成功):代码第3行

3.2 如果用户在数据库中验证密码:在代码第2行中

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LARAVEL5 自定义登录 的相关文章

随机推荐

  • 是否可以在没有滚动条的情况下计算视口宽度(vw)? [复制]

    这个问题在这里已经有答案了 如标题所述 是否可以计算vw仅在CSS中没有滚动条 例如 我的屏幕宽度为1920px vw回报1920px 伟大的 但我的实际身体宽度只是这样1903px 有没有办法让我找回1903px仅带有 css 的值 不仅
  • __WEBPACK_IMPORTED_MODULE_4_react___default.a.memo 不是函数

    我只是使用 redux 和 react redux connect 函数连接应用程序 以及状态和调度 编译没有问题 但结果没有显示 如下所示 我试图找到它 发现我必须更改react版本 sudo npm install save email
  • 使用Django South从具体继承转向抽象继承

    我有一个现有的 Django 项目 其中有几个使用基类的具体继承的模型 经过仔细考虑 并阅读了人们喜欢雅各布 卡普兰 莫斯的内容后不得不说一下 在我的例子中没有必要使用这个具体的继承 我想改为使用抽象基类 使事情变得复杂的是我的网站是实时的
  • Tomcat v7.0 停止在本地主机上运行我的项目

    我正在 eclipse 中使用 Tomcat v7 0 开发我的 Web 应用程序 一切都很好 但今天突然我无法再在服务器上运行我的项目了 我像往常一样做 右键单击我的项目 gt 运行方式 gt 在服务器上运行 然后选择在我的 Tomcat
  • 有符号/无符号比较

    我试图理解为什么以下代码不在指定位置发出警告 from limits h define UINT MAX 0xffffffff maximum unsigned int value define INT MAX 2147483647 max
  • 统一 Spark Dataframe 中多行 json 字符串的架构

    我有一个关于 PySpark DataFrame 中包含一系列 json 字符串的行的难题 问题围绕着每一行might包含与另一个不同的模式 因此当我想将所述行转换为 PySpark 中的可订阅数据类型时 我需要有一个 统一 模式 例如 考
  • 第二次尝试刷新时如何将页面重定向到另一个页面

    我尝试了这段代码 但它不起作用 In bbb jsp window onbeforeunload function window setTimeout function window location AAA jsp 0 window on
  • IntelliJ IDEA中如何设置环境变量?

    如何 在哪里 使用 IntelliJ idea 设置环境变量 例如 我期待设置 APP HOME 我的测试依赖 请问哪里可以做这个 大多数运行配置都可以选择设置环境变量
  • 在 Python 中使用尾随逗号连接或打印列表元素

    我的清单如下 gt gt gt l 1 2 3 4 如果我使用 join 语句 gt gt gt s join l 会给我输出 1 2 3 4 但是 如果我想要输出为 1 2 3 4 我知道我可以使用字符串连接 但我想知道一些更好的方法 字
  • Pandas groupby + 变换和多列

    为了获得在 groupby data 上执行的结果 其详细程度与原始 DataFrame 相同的观察计数 相同 我使用了转换函数 例子 原始数据框 name year grade Jack 2010 6 Jack 2011 7 Rosie
  • 包可见性[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 为什么要使用包可见性 默认 除非该类在 java 中应该是 public 正如 Rostislav Matl 所说 当您想要制作不属于软件包界面一部分的东西时 它非常有用 举个例
  • AffineTransform:从中心缩放形状

    我正在尝试使用 AffineTransform 从中心缩放矩形 我确信解决方案是显而易见的 但我无法使其发挥作用 这是我迄今为止测试过的 import java awt Color import java awt Dimension imp
  • 如何更改 Lollipop 上最新 Chrome 版本中标题栏和地址栏的颜色?

    我还没有找到关于这个主题的任何内容 我真的很喜欢在概览上更改地址栏颜色和标题颜色的功能 是否有捷径可寻 我想你需要安卓5 0 Lollipop 要让它工作 而 Chrome 的合并选项卡和应用程序 set to On 经过一番搜索后我找到了
  • Javascript 字符串对象只读?

    a new String Hello a 0 H true a 0 J a 0 J false a 0 H true 这是否意味着我只能使用字符串作为字符数组 split 进而 join ANSWER 是的 在Javascript stri
  • 使用依赖注入注入依赖注入器

    对于依赖注入来说相当陌生 我试图弄清楚这是否是一种反模式 假设我有 3 个程序集 Foo Shared this has all the interfaces Foo Users references Foo Shared Foo Paym
  • @RefreshScope 不工作 - Spring Boot

    我正在遵循此处描述的方法 https github com jeroenbellen blog manage and reload spring properties 唯一的区别是 就我而言 这些属性在多个类中使用 因此我将它们全部放在一个
  • Facebook 登录建议需要 HTTPS - 如何在 ASP.NET MVC 中为 Facebook 登录配置 HTTP 重定向 URL?

    Facebook 建议我使用 HTTPS 重定向 URL 而不是 HTTP 我一直在尝试找到一种方法来配置它来生成 HTTPS URL 目前它正在生成 HTTP URL http example com signin facebook sc
  • 数组的大小是在编译时确定的吗?

    当我在阅读有关数组初始化的内容时本教程 我发现了这个注释 type name elements 注意 方括号内的元素字段 表示数组中元素的数量 必须是常量表达式 因为数组是静态内存块 其大小必须在程序运行之前的编译时确定 据我所知 数组在运
  • 检查一个字符是否是Java中的特殊字符[重复]

    这个问题在这里已经有答案了 可能的重复 JAVA 检查字符串中是否有特殊字符 我是一名新手程序员 正在寻求帮助确定某个字符是否是特殊字符 我的程序要求用户输入文件名 程序读取文件中的文本并确定文本中有多少个空格 数字 字母和特殊字符 我已完
  • LARAVEL5 自定义登录

    我正在使用需要自定义登录的应用程序 我必须遵循这个流程 用户将进入登录页面 用户提交登录页面 应用程序将检查用户是否在数据库中 3 1 如果用户不在数据库中 会向第三方发送请求 检查是否登录成功 3 2 如果用户在数据库中 则验证密码 现在