Php 在LARAVEL中,从自定义URL获取用户名时,是否可以将用户标记为已登录?
我目前正在做一个网站,其中的登录URL是不同的,并显示根据分配给他们的项目的数据 例如,用户A只能访问Php 在LARAVEL中,从自定义URL获取用户名时,是否可以将用户标记为已登录?,php,laravel,Php,Laravel,我目前正在做一个网站,其中的登录URL是不同的,并显示根据分配给他们的项目的数据 例如,用户A只能访问www.example.com/projects/proj1。这是用户A的主页,如果他登录,他将使用www.example.com/projects/proj1/login 而用户B只能访问www.example.com/projects/proj2。这是用户B的主页,如果他登录,他将使用www.example.com/projects/proj2/login 请注意,proj1和proj2因数
www.example.com/projects/proj1
。这是用户A的主页,如果他登录,他将使用www.example.com/projects/proj1/login
而用户B只能访问www.example.com/projects/proj2
。这是用户B的主页,如果他登录,他将使用www.example.com/projects/proj2/login
请注意,proj1和proj2因数据库而异。因此,我必须首先检查这些项目是否已在数据库中注册
我想有一条这样的路线
对于web.php
Route::get('/projects/{project_name}', 'PageHandler\CustomPageController@projects');
Route::get('/projects/{project_name}/login', 'PageHandler\CustomPageController@login');
Route::put('/projects/{project_name}/auth/{user}', 'PageHandler\TestUserPageController@auth');
然后我的customepagecontroller.php如下所示
class CustomPageController extends Controller
{
public function projects(string $projectName)
{
if (auth()->user() == null)
return redirect('/projects'. '/' . $projectName . '/login');
}
public function login(string $projectName)
{
return view('login')->with('projectName', $projectName);
}
public function auth(Request $request, string $projectName)
{
$username = $request->username;
//How to set $username as logged in?
// rest of the code to show the home page after authentication
}
}
login.blade.php基本上就像一个表单,提交用户名和密码,并使用URL的字符串参数调用CustomPageController
的auth
因此,我的问题是如何将$username设置为已使用Laravel的身份验证登录?还是应该创建自定义身份验证控制器
现在,这是我唯一想到的让用户登录到不同URL的方法。如果你有更好的方法,请告诉我
谢谢大家! 如果您只想限制用户可以访问的项目,我认为不需要使用两个不同的登录URL(如果您需要不同URL的原因,请更正我),相反,您只需从数据库中查找用户所属的项目即可 对于身份验证,Laravel允许您以非常简单的方式实现身份验证,您可以参考。使用Laravel的身份验证将比编写自己的身份验证更容易、更安全,即使它提供的默认功能可能与您想要实现的功能不完全相同,您仍然可以添加自己的东西,这仍然比从头开始实现要容易得多 至于将用户设置为使用Laravel的身份验证服务登录,您可以使用
Auth::login($user)代码>。这里,$user
必须是illumb\Contracts\Auth\Authenticatable
契约的实现。有关更多详细信息,请参阅文档的第页