gpt4 book ai didi

java - 重置 : Chaining multiple routers with different authentication methods

转载 作者:行者123 更新时间:2023-12-01 23:10:44 25 4
gpt4 key购买 nike

我有两种方法来验证我的用户和附加到我的单个路由器的多个路由。出于安全原因,我想将我的路由器分成 2 个路由器,并使用它们自己的身份验证方法。

到目前为止我已经:

Router router = new Router(getContext());

BBasicAuthenticator basicAuth = new BBasicAuthenticator(getContext(), true, false);
BCookieAuthenticator cookieAuth = new BCookieAuthenticator(getContext(), false, false);
Enroler enroler = new Enroler();

router.attach("route1/only/basicAuth", Resource1.class);
router.attach("route2/only/basicAuth", Resource2.class);
router.attach("route3/only/cookieAuth", Resource3.class);
router.attach("route4/only/cookieAuth", Resource4.class);
..

basicAuth.setNext(cookieAuth);
basicAuth.setEnroler(enroler);

cookieAuth.setNext(router);
cookieAuth.setEnroler(enroler);

是否可以有两个不同的路由器,并且每个路由器都有自己的身份验证方法。如何链接两个路由器?

理想情况下是这样的:

Router basicRouter = new Router(getContext());
Router cookieRouter = new Router(getContext());

BBasicAuthenticator basicAuth = new BBasicAuthenticator(getContext(), true, false);
BCookieAuthenticator cookieAuth = new BCookieAuthenticator(getContext(), false, false);
Enroler enroler = new Enroler();

basicRouter.attach("route1/only/basicAuth", Resource1.class);
basicRouter.attach("route2/only/basicAuth", Resource2.class);
..
cookieRouter.attach("route3/only/cookieAuth", Resource3.class);
cookieRouter.attach("route4/only/cookieAuth", Resource4.class);
..

basicAuth.setNext(basicRouter);
basicAuth.setEnroler(enroler);

//how to set next cookieRouter

cookieAuth.setNext(cookieRouter);
cookieAuth.setEnroler(enroler);

感谢大家的帮助。

更新1:

router.attach("/v1/invoices/{invoice_id}/installments/{id}", InvoiceInstallmentResource.class);
router.attach("/v1/{object_type}/{id}/change-status", ChangeStatusResource.class);
####
router.attach("/v1/accounts", AccountsResource.class);
router.attach("/v1/accounts/{id}", AccountResource.class);
router.attach("/v1/items/{id}", ItemResource.class);
router.attach("/v1/items", ItemsResource.class);
....

前两个路由是我们需要维护的“旧服务”,它们使用 cookie 身份验证。以下路由是新路由,使用 basic-auth。

这里的问题是,通过cookie认证,所有资源都可以访问,但只有前两个路由应该可以访问。

谢谢

最佳答案

这是一个棘手的案例。这是使用嵌套路由器和默认路由的解决方案。

BCookieAuthenticator cookieAuth1 = new BCookieAuthenticator(getContext(), false, false);
cookieAuth1.setNext(InvoiceInstallmentResource.class);
BCookieAuthenticator cookieAuth2 = new BCookieAuthenticator(getContext(), false, false);
cookieAuth2.setNext(ChangeStatusResource.class);

BBasicAuthenticator basicAuth = new BBasicAuthenticator(getContext(), true, false);
basicAuth.setNext(router2);

router2.attach("/v1/accounts", AccountsResource.class);
router2.attach("/v1/accounts/{id}", AccountResource.class);
router2.attach("/v1/items/{id}", ItemResource.class);
router2.attach("/v1/items", ItemsResource.class);

router1.attach("/v1/invoices/{invoice_id}/installments/{id}", cookieAuth1);
router1.attach("/v1/{object_type}/{id}/change-status", cookieAuth2);
router1.attachDefault(basicAuth);

关于java - 重置 : Chaining multiple routers with different authentication methods,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22057636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com