繁体   English   中英

播放框架2.2:如何在Java中获取当前的控制器和动作

[英]Play framework 2.2: How to get current controller and action in java

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

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

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 {
    ....
}

在我的操作中,我可以访问会话中的用户。 我想获得当前的控制器和操作,以便可以对用户进行身份验证。 有什么办法吗?

我已经阅读了有关使用参数创建自定义注释的信息,并在每个控制器中均通过参数来标识操作。 但是,如果我在复制粘贴时写错了动作名称,这似乎很容易出错。

谢谢

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

如果您需要更多信息,可以使用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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM