如何在Laravel上进行自定义身份验证?

时间:2019-04-15 15:22:50

标签: laravel

我有一个带有登录表单的Laravel应用程序。我正在使用子域,例如:{{business_subdomain}}。laravel.test。我的应用程序的目的是在数据库中创建公司,并使注册用户登录其所属公司和特定域。

因此,在我的web.php中,我声明了以下内容:

Route::domain('{business_subdomain}.' . env('APP_URL'))->middleware(['business.subdomain'])->group(function ()

我的数据库包含以下表:
*像用户这样的标准表
*包含ID,名称和子域的业务
* Business_user,其中包含business_id和user_id

business_id(business_user表)与id(business表)有关系
user_id(business_user表)与id(users表)有关系

我创建了一个检查以下各项的中间件:

$business = $request->user()->businesses->where('subdomain', $request->route('business_subdomain'))->first();

因此,子域值(业务表)必须等于URL /路由子域值,否则登录时将获得403页。

所以我要实现的目的:当用户拥有一个帐户,但未附加到 right 公司/企业时,我想显示标准的身份验证错误:这些凭据与我们的记录不匹配。

我试图在我的中间件中使用LoginController上的代码,并分别覆盖几乎每个函数,但这没有用。

我是否需要重写Laravel身份验证功能,是否需要创建其他中间件或使用Guards?

laravel身份验证登录顺序(应用程序用于登录用户的顺序)对我来说很混乱。

也许有人可以为我提供更多信息或帮助我!

我试图在LoginController上的中间件中使用代码,并分别覆盖几乎每个函数,但这没有用。

1 个答案:

答案 0 :(得分:1)

听起来像您可能正在寻求多租户。有两种不同的软件包,可用于单数据库和多数据库设置。

这里是some very informative slides on the topic,特定于Laravel。还有an excellent article

我们有一个类似的应用程序,它使用torzer/awesome-landlord进行子域路由。租户软件包可确保登录名仅搜索正确租户的用户。

要设置正确的租户,我们添加了一个中间件(html, body { height: 100%; overflow: hidden; } .main-content { display: flex; width: 100%; } .left-content { float: left; } .right-content { width: 100%; background-color: #5c7; } .project-list { max-width: 200px; float: left; height: 100%; overflow-x: hidden; overflow-y: auto; background-color: #f33; } .code-details { max-width: 200px; float: left; height: 100%; overflow-x: hidden; overflow-y: auto; background-color: #37f; }是租户,在您的情况下为<div class="main-content"> <div class="left-content"> <div class="project-list"> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lacus viverra vitae congue eu. Amet commodo nulla facilisi nullam vehicula. Ultrices mi tempus imperdiet nulla malesuada pellentesque. Quis commodo odio aenean sed adipiscing diam. Diam maecenas sed enim ut sem viverra. Lacus vestibulum sed arcu non odio euismod. Felis imperdiet proin fermentum leo vel orci porta non pulvinar. Dapibus ultrices in iaculis nunc. Felis donec et odio pellentesque. Diam sollicitudin tempor id eu nisl. Duis at consectetur lorem donec massa. Duis ultricies lacus sed turpis tincidunt id. Sagittis purus sit amet volutpat consequat mauris nunc. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Aenean euismod elementum nisi quis eleifend quam adipiscing vitae proin. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet.</p> </div> <div class="code-details"> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lacus viverra vitae congue eu. Amet commodo nulla facilisi nullam vehicula. Ultrices mi tempus imperdiet nulla malesuada pellentesque. Quis commodo odio aenean sed adipiscing diam. Diam maecenas sed enim ut sem viverra. Lacus vestibulum sed arcu non odio euismod. Felis imperdiet proin fermentum leo vel orci porta non pulvinar. Dapibus ultrices in iaculis nunc. Felis donec et odio pellentesque. Diam sollicitudin tempor id eu nisl. Duis at consectetur lorem donec massa. Duis ultricies lacus sed turpis tincidunt id. Sagittis purus sit amet volutpat consequat mauris nunc. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Aenean euismod elementum nisi quis eleifend quam adipiscing vitae proin. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet.</p> </div> </div> <div class="right-content"> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lacus viverra vitae congue eu. Amet commodo nulla facilisi nullam vehicula. Ultrices mi tempus imperdiet nulla malesuada pellentesque. Quis commodo odio aenean sed adipiscing diam. Diam maecenas sed enim ut sem viverra. Lacus vestibulum sed arcu non odio euismod. Felis imperdiet proin fermentum leo vel orci porta non pulvinar. Dapibus ultrices in iaculis nunc. Felis donec et odio pellentesque. Diam sollicitudin tempor id eu nisl. Duis at consectetur lorem donec massa. Duis ultricies lacus sed turpis tincidunt id. Sagittis purus sit amet volutpat consequat mauris nunc. Enim lobortis scelerisque fermentum dui faucibus in ornare quam. Aenean euismod elementum nisi quis eleifend quam adipiscing vitae proin. Massa placerat duis ultricies lacus sed turpis tincidunt id aliquet.</p> </div> </div>):

div