【发布时间】:2014-09-03 13:59:37
【问题描述】:
在我的应用程序中,身份验证方案是基于用户和角色的。具有特定角色的用户可以访问特定的操作方法。
为了实现这一点,我已经完成了以下操作
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 {
....
}
在我的操作中,我可以访问正在会话中的用户。我想获取当前控制器和操作,以便我可以对用户进行身份验证。有什么办法吗?
我已阅读有关使用参数创建自定义注释并在每个控制器中传递参数以识别操作的信息。但是,如果我在复制粘贴时误写了错误的动作名称,这似乎很容易出错。
谢谢
【问题讨论】:
-
您是在寻找对控制器对象的引用还是只是作为动作基础的控制器的标识符(即字符串)?
-
两者都可以。我在找控制器和方法,字符串和对象都可以。
-
那么你会在你的
Authorization类中有一个大的if...else结构吗?您确实应该在控制器或方法级别定义执行该方法所需的角色并在您的Authorization类中检查它。它真的不容易出错。 -
谢谢它确实容易出错。因此,我为每种访问类型创建了自定义注释,并将其放入每个控制器方法中。
标签: java playframework playframework-2.0 playframework-2.2