当访问无效时,如何从 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:['...']
   });