gpt4 book ai didi

java - Play Framework 2.2 : How to get current controller and action in java

转载 作者:太空宇宙 更新时间:2023-11-04 14:35:26 25 4
gpt4 key购买 nike

在我的应用程序中,身份验证方案基于用户和角色。具有特定角色的用户可以访问特定的操作方法。

为了实现这一点,我做了以下工作

1.编写自定义 Action

public class Authorization extends play.mvc.Action.Simple {
public Promise<Result> call(Context ctx) throws Throwable {
//check access
return delegate.call(ctx);
}
}

2.用 Action 注释 Controller

@With(actions.Authorization.class)
public class Upload extends Controller {
....
}

在我的操作中,我可以访问正在 session 中的用户。我想获取当前的 Controller 和操作,以便我可以对用户进行身份验证。有什么办法吗?

我已经阅读了有关使用参数创建自定义注释的信息,并在每个 Controller 中传递参数来识别操作。但如果我在复制粘贴时错误地写了错误的操作名称,这似乎需要大量工作并且容易出错。

谢谢

最佳答案

您可以使用context.request().path()来获取包含所使用路径的字符串。这不会包含任何查询参数,因此如果您需要它们,可以使用同一对象的 getQueryParameteruri(完整 url)方法。

如果您需要更多信息,可以使用context.args。这将为您提供带有以下按键的 map (至少在 Play 2.2 中):

ROUTE_VERB          -> The HTTP verb used (ex: GET)
ROUTE_ACTION_METHOD -> The method called (ex: getUserFavorites)
ROUTE_CONTROLLER -> Controller class (ex: controllers.api.UsersController)
ROUTE_COMMENTS -> ???
ROUTE_PATTERN -> THE URL used (ex: users/favorites)

关于java - Play Framework 2.2 : How to get current controller and action in java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25646335/

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