php - Laravel 8“强化”重定向在生产注册后不起作用
问题描述
我已经为管理员和用户设置了一个基于角色的身份验证,以便在注册和登录后重定向到不同的路由,这在我的本地机器上非常好,但是当我部署到生产环境时,它重定向到我没有在我的 web.xml 中声明的 /home。 php
FortifyServiceProvider.php
$this->app->singleton(
LoginResponseContract::class,
LoginResponse::class
);
$this->app->singleton(
TwoFactorLoginResponseContract::class,
TwoFactorLoginResponse::class
);
登录响应.php
public function toResponse($request)
{
$role = \Auth::user()->role_id;
if ($request->wantsJson()) {
return response()->json(['two_factor' => false]);
}
$home = $role == 1 ? '/admin' : '/account';
return redirect()->intended($home);
}
RouteServiceProvider.php
public const ACCOUNT = '/account';
public const ADMIN = '/admin';
创建新用户.php
$user = User::create([
'name' => $input['name'],
'username' => $input['username'],
'email' => $input['email'],
'password' => Hash::make($input['password']),
'role_id' => 2,
'referrer_id' => $referrer->id ?? null,
]);
$user->notify(new WelcomeEmail($user));
return $user;
请任何帮助将不胜感激,我在过去的两天里一直卡住
谢谢
解决方案
也许您的本地和生产的 php 版本不同,因此某些 php 版本不适用于这种形式的 IF 使用这种方式:
public function toResponse($request)
{
$role = \Auth::user()->role_id;
if ($request->wantsJson()) {
return response()->json(['two_factor' => false]);
}
if($role == 1){
$home = '/admin';
}else{
$home ='/account';
}
return redirect()->to($home);
}
推荐阅读
- html - Bootstrap 4:如何在标签附近使用完整的跨度区域
- python - 将带有分组数据的 CSV 导入 Pandas 数据框
- swift - 背景颜色变化不可见
- firebase - Firebase 函数的依赖项何时安装在托管服务器上?部署时?
- azure - Azure VM上的Tomcat使用terraform?
- robotframework - Robot Framework:从文件中读取登录凭证
- java - Table View Javafx 无法正确显示数据。表中的数据是不可见的
- php - phpMyAdmin:无法使用 root 以外的用户登录
- angular - 更新查询参数复选框过滤器角度4
- go - 执行 RFC7523