当访问无效时,如何从 axios 代码重定向?
How can I make to redirect from axios code wwhen invalid access?
使用 Laravel 9/Inertiajs 3 我在管理区域下有一个页面,用于检查用户是否以管理员身份登录:
我的 vuejs 页面是容器 vue 文件,我使用 axios 读取数据(这让我可以 运行 过滤而无需重新加载所有页面):
axios.post(route('admin.currencies.filter'), filters)
.then(({data}) => {
currencyRows.value = data.data
})
.catch(e => {
showRTE(e) // custom error
console.error(e)
})
和:
<?php
class CurrencyController extends Controller
{
public function index()
{
if ( ! auth()->user()->can(ACCESS_APP_ADMIN_LABEL)) {
return redirect(route('admin.dashboard.index'))
->with( 'flash', 'You have no access to currencies listing page')
->with('flash_type', 'error');
}
return Inertia::render('Admins/Currencies/Index', []);
}
public function filter()
{
\Log::info( varDump(-9, ' -9 filter::') );
if ( ! auth()->user()->can(ACCESS_APP_ADMIN_LABEL)) {
\Log::info( varDump(-98, ' -98 INSIDE filter::') );
return redirect(route('admin.dashboard.index'))
->with( 'flash', 'You have no access to currencies filter method')
->with('flash_type', 'error');
}
...
$currencies = Currency
::getByName($filter_name)
->orderBy($order_by, $order_direction)
->paginate($backend_items_per_page, array('*'), 'page', $page);
return (CurrencyResource::collection($currencies)); // collection of resources
} // public function filter()
...
php>
问题是当在过滤器方法中无效的访问代码是 运行(我在文件中检查过)应用程序没有重定向到 dasboard 页面,而是 运行 下一个
我得到 javascript 错误,因为过滤方法没有 return 客户端预期的有效数据...
看来无法从 axios 代码中 运行 重定向...如何实现?
谢谢!
您可以将 axios 更改为 this.$inertia : [https://inertiajs.com/manual-visits]
this.$inertia.post(this.route('...'),{},{
only:['...']
});
使用 Laravel 9/Inertiajs 3 我在管理区域下有一个页面,用于检查用户是否以管理员身份登录:
我的 vuejs 页面是容器 vue 文件,我使用 axios 读取数据(这让我可以 运行 过滤而无需重新加载所有页面):
axios.post(route('admin.currencies.filter'), filters)
.then(({data}) => {
currencyRows.value = data.data
})
.catch(e => {
showRTE(e) // custom error
console.error(e)
})
和:
<?php
class CurrencyController extends Controller
{
public function index()
{
if ( ! auth()->user()->can(ACCESS_APP_ADMIN_LABEL)) {
return redirect(route('admin.dashboard.index'))
->with( 'flash', 'You have no access to currencies listing page')
->with('flash_type', 'error');
}
return Inertia::render('Admins/Currencies/Index', []);
}
public function filter()
{
\Log::info( varDump(-9, ' -9 filter::') );
if ( ! auth()->user()->can(ACCESS_APP_ADMIN_LABEL)) {
\Log::info( varDump(-98, ' -98 INSIDE filter::') );
return redirect(route('admin.dashboard.index'))
->with( 'flash', 'You have no access to currencies filter method')
->with('flash_type', 'error');
}
...
$currencies = Currency
::getByName($filter_name)
->orderBy($order_by, $order_direction)
->paginate($backend_items_per_page, array('*'), 'page', $page);
return (CurrencyResource::collection($currencies)); // collection of resources
} // public function filter()
...
php>
问题是当在过滤器方法中无效的访问代码是 运行(我在文件中检查过)应用程序没有重定向到 dasboard 页面,而是 运行 下一个 我得到 javascript 错误,因为过滤方法没有 return 客户端预期的有效数据...
看来无法从 axios 代码中 运行 重定向...如何实现?
谢谢!
您可以将 axios 更改为 this.$inertia : [https://inertiajs.com/manual-visits]
this.$inertia.post(this.route('...'),{},{
only:['...']
});