此bounty已结束。回答此问题可获得+200声望奖励。奖励宽限期将在17分钟后结束。Александр Инженер希望引起更多人关注此问题。
我有一个使用Laravel REST API的移动的应用程序。此应用程序中的授权使用Laravel Sanctum Package。此架构工作得很好,但我不仅需要创建一个移动应用程序,而且还需要创建一个网站。由于我在网站的某些页面上有复杂的业务逻辑,我将无法使用纯PHP,我将不得不使用javascript和一个框架,比如Vue。我已经有了一个处理数据的REST API,但是问题是授权。关于安全性的问题,这种方法有多正确,是否有可能混合Laravel Breeze
auth和Laravel Sanctum
。我的想法是,在注册用户时,我也会为他创建一个访问令牌,但不是存储在客户端浏览器上,但是通过视图传递它。由于我是Laravel架构的新手,也许有更好的解决方案来解决这个问题?
//controller
use Illuminate\Support\Facades\Auth;
if (Auth::check()) {
$url = "/api/product/url-for-auth-user"
$token = $userAccessTokenFromDb;
}else{
$url = "/api/product/url-for-anonymous-user";
$token = "";
}
//blade webpage
<div id="app">
<div>
//Vue component to which the link to REST API and token are passed
<product url="{{$url}}" token="{{$token}}"></product>
</div>
</div>
1条答案
按热度按时间ioekq8ef1#
如果你使用预期的功能,那么在Breeze的routes中使用web.php和api.php,一切都会很好。当你用api登录用户时,也会设置会话cookie,反之亦然。我已经离开breeze一段时间了,它不像JetStream那样使用Sanctum吗?
你可以在config/auth.php中为web和API返回设置不同的保护[
在config/sancup中,您可以将Web gaurd定义为默认值:
这应该都已经为你设置好了!然后你就可以使用web.php中的中间件来处理使用sancum的web,而routes/api.php应该被用于路由,也就是你定义授权路由的地方:
//routes/web.php路由::中间件([ 'auth:sancum',])-〉组(函数(){
breze已经在web.php中创建了这个,它的工作非常简单,我想不出如果你做得对,需要手动设置什么,我认为你只需要使用路径separate和使用middlewears,并按照laravel安装文档安装sancutum和breeze with breeze。