Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过注释播放框架将信息传递给@以获得用户授权_Java_Annotations_Playframework 2.0_Authorization - Fatal编程技术网

Java 通过注释播放框架将信息传递给@以获得用户授权

Java 通过注释播放框架将信息传递给@以获得用户授权,java,annotations,playframework-2.0,authorization,Java,Annotations,Playframework 2.0,Authorization,我正在play 2.4中编写一个应用程序,在执行某个操作之前,我希望确保用户具有执行该操作的权限 我可以使用请求头中的信息检索当前用户,但是如果可以像这样传递操作名称,这将非常有用 @With(Authorization.class , action="create_account") public static Result createAccount(){ return ok("Account created"); } 然后授权可以做这样的事情 public class Author

我正在play 2.4中编写一个应用程序,在执行某个操作之前,我希望确保用户具有执行该操作的权限

我可以使用请求头中的信息检索当前用户,但是如果可以像这样传递操作名称,这将非常有用

@With(Authorization.class , action="create_account")
public static Result createAccount(){
   return ok("Account created");
}
然后授权可以做这样的事情

public class Authorization extends Action.Simple{
   @Override
   public F.Promise<Result> call(Http.Context context) throws Throwable{
      if(action == "zoom")
         throw new UnauthorizedExcption("You can't do that!");
      else
           return delegate.call(context);
   }
公共类授权扩展操作。简单{
@凌驾
public F.Promise调用(Http.Context上下文)抛出可丢弃的{
如果(操作==“缩放”)
抛出新的未经授权的dexcption(“你不能这么做!”);
其他的
返回delegate.call(上下文);
}

因此,本质上我的问题是我需要将数据传递给授权类。有没有解决此类问题的方法?

我通过在会话之间传递数据做了类似的事情。请查看以下链接!希望这有帮助!)


自己创建一个接受参数的自定义注释:

@With(Authorization.class)
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Auth {
    String value() default "";
}
按如下方式注释控制器方法:

@Auth("create-account")
public static Result createAccount(){
   return ok("Account created");
}
要从注释中检索值,请使
授权
类扩展
操作

公共类授权扩展操作{
字符串值=configuration.value();
// ...
}
public class Authorization extends Action<Auth> {
    String value = configuration.value();
    // ...
}