Play framework 2.2:如何在java中获取当前的控制器和动作

时间:2014-09-03 13:59:38

标签: java playframework playframework-2.0 playframework-2.2

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

为了实现这一点,我已经完成了以下

1.写自定义动作

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

2.使用操作注释控制器

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

在我的操作中,我可以访问正在进行会话的用户。我想获得当前的控制器和操作,以便我可以验证用户。有没有办法解决这个问题?

我已阅读有关使用params创建自定义注释的信息,并在每个控制器中传递参数以识别操作。但是如果错误的话我会在复制粘贴时写错错误的动作名称,这似乎有很多工作和容易出错。

由于

1 个答案:

答案 0 :(得分:0)

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

如果您需要更多信息,可以使用context.args。这将为您提供一个包含以下键的地图(至少在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)