当前位置: 首页 > 知识库问答 >
问题:

如何修改Laravel Jetstream登录

贺博厚
2023-03-14

我正在使用Larave Jetstream livewire,我想修改登录名。

从初始值为1的隐藏输入字段“is_admin”登录

当用户提交登录表单后端检查时,使用数据库表字段的is\u admin=1

表结构:名称、电子邮件、密码、is_admin

is_admin=0或1

我想检查is_admin标志,如果提供的凭据与电子邮件、密码和is_admin=1匹配,则只有用户可以登录。

共有1个答案

陈翰林
2023-03-14

我认为您打算定制身份验证。由于您使用的是Jetstream,很可能您使用的是Fortify开箱即用(默认情况下)。

有两种方法。这些帮助您从身份验证表单而不仅仅是隐藏字段发送额外数据。但是,如果is\u admin字段是默认字段,那么我认为不应该将其添加为隐藏字段。你可能会妥协。

示例1。编辑用户。php模型并添加引导方法Fortify::authenticatesing

use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Laravel\Fortify\Fortify;

/**
 * Bootstrap any application services.
 *
 * @return void
 */
public function boot()
{
    Fortify::authenticateUsing(function (Request $request) {
        $is_admin = $request->is_admin ?? 1;

        // Your code here ... Example for login in below
        $user = User::where('email', $request->email)->first();

        if ($user &&
            Hash::check($request->password, $user->password)) {
            return $user;
        }
    });

    // ...
}

https://laravel.com/docs/8.x/fortify#customizing-user-authentication

示例2。您还可以编辑应用程序/提供商/FortifyServiceProvider。php

在引导方法中添加

Fortify::authenticateUsing(function (Request $request){
    $is_admin = $request->is_admin ?? 1;
    
    // Other codes here
});

此外,除非我没有正确理解您的意思,但我只是想在允许登录之前确保用户是管理员,否则您可以调整示例1中的身份验证代码来实现这一点。

Fortify::authenticateUsing(function (Request $request) {

    $user = User::where(['email' => $request->email, 'is_admin' => 1])->first();

    if ($user && Hash::check($request->password, $user->password)) {
            return $user;
    }
});

 类似资料:
  • 本文向大家介绍CentOS7如何修改SSH登录端口,包括了CentOS7如何修改SSH登录端口的使用技巧和注意事项,需要的朋友参考一下 centos7修改ssh默认登录端口和centos6差不多,就是防火墙不一样,然后关闭selinux最好。 【修改ssh默认22端口】 在Port 22下面加一行,以端口50000为例,Port 50000 然后保存,重启ssh服务systemctl restar

  • 打开UserModule, 将login方法修改为 @At @Filters // 覆盖UserModule类的@Filter设置,因为登陆可不能要求是个已经登陆的Session public Object login(@Param("username")String name, @Param("password")String password,

  • 打开当前登陆表单所在的WebContent/index.jsp页面, 在下述代码 密码 <input name="password" type="password" value="123456"> 的后面加入 <script type="text/javascript"> function next_captcha() {

  • 我使用laravel 5.0。我想使用auth laravel登录,但我只需要在登录时输入用户名(不需要电子邮件和/或密码)。我把代码改成了下面这些。 在我的: 在我的车型中: 我有一个错误: EloquentUserProvider.php第111行中的ErrorException:未定义索引:密码 你知道怎么解决这个问题吗?

  • 问题内容: 标题说明了一切。我在 SWIFT_MODULE_NAME 的构建设置中进行了 搜索 ,但没有发现任何问题。我也在网上搜索过,并且有对该名称的引用,但没有有关其定义的信息。 此外,我在Apple Docs中找不到任何提及SWIFT_MODULE_NAME的信息。 我确实知道这一点:它在“ Objective-C生成的接口头名称”构建设置中使用,并且可以通过双击设置值来查看: $(SWIF

  • 在我的Nativescript Angular 2 Typescript应用程序中,我希望有一个Nativescript加载任何包含html文本输入字段的远程网站(不受我控制)。 然后我想用我的NativeScript应用程序的值填充这些输入字段。 我以前在android studio中使用java完成过这项工作,在那里可以运行一些JS并修改webview的dom。但是,在没有运行特定于andro