如何记录控制器中出现的问题
Posted
技术标签:
【中文标题】如何记录控制器中出现的问题【英文标题】:How can I log what is going wrong in my controller 【发布时间】:2020-02-01 16:01:38 【问题描述】:我正在尝试使用 laravel/vue.js/vuex 在我的网站上注册用户。在我的商店操作中,我调用 tryRegister 操作来发布请求。但它一直以未经授权的 401 错误响应,我不明白为什么。因此,我将我的控制器设置为最基本的,因为它可以得到响应,即使这样它仍然会抛出 401 授权错误。我是后端开发的新手,只是不明白为什么会发生这种情况。我确实知道这条路线是有效的。如何让我的控制器功能给出基本响应以查看它是否正常工作?为什么即使我没有对授权做任何事情,它也会给出授权错误,这只是控制器给出的标准错误吗?
尝试注册操作
tryRegister(context, credentials)
return new Promise((resolve, reject) =>
axios
.post("/api/auth/register", credentials)
.then(response =>
console.log(response.data);
//context.commit("registerSucces", response.data);
resolve(response.data);
)
.catch(error =>
console.log(error.response);
reject(error);
);
);
授权控制器注册函数
public function register(Request $request)
// $user = User::create([
// 'email' => $request->email,
// 'password' => $request->password,
// ]);
//$token = auth('api')->login($user);
//return $this->respondWithToken($token);
return response()->json(['message' => 'controller register']);
【问题讨论】:
在控制器的构造方法中检查您是否在路由中使用了auth
中间件。
你有路由的令牌吗?有中间件吗?路由是否以某种方式受到保护(可能在防火墙后面 - 我假设 laravel 有某种防火墙)?
@zahidhasanemon 我在构造函数中有一个身份验证中间件。它说$this->middleware('auth:api', ['except' => ['login']]);
,所以我认为它不对登录功能进行授权,所以我认为我不希望它用于注册。但是我怎样才能进行 axios 调用以便它通过中间件呢?还是这取决于中间件的类型?
我目前正在阅读cloudways.com/blog/controllers-middleware-laravel 以更好地了解中间件!
【参考方案1】:
由于auth
中间件,无法访问控制器的注册方法。所以你得到了未授权的错误。使其未经授权即可访问。在控制器的构造方法中改变这一行,如下所示。
$this->middleware('auth:api', ['except' => ['login', 'register']]);
login
和register
是控制器的方法,现在无需授权即可访问。
【讨论】:
以上是关于如何记录控制器中出现的问题的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Python 中记录 xbox/gamepad 控制器的状态?