我正在尝试向我在 Play 2.7 中构建的 Rest API 添加授权。我在这里找到了旧版本的一个很好的例子,但我无法访问 Http 上下文,所以我无法将用户添加为 arg。
在 Play 2.7 中是否有另一种方法可以在不访问上下文的情况下执行此操作?
public class Secured extends Security.Authenticator {
@Override
public String getUsername(Context ctx) {
String[] authTokenHeaderValues = ctx.request().headers().get(SecurityController.AUTH_TOKEN_HEADER);
if ((authTokenHeaderValues != null) && (authTokenHeaderValues.length == 1) && (authTokenHeaderValues[0] != null)) {
User user = models.User.findByAuthToken(authTokenHeaderValues[0]);
if (user != null) {
ctx.args.put("user", user);
return user.getEmailAddress();
}
}
return null;
}
@Override
public Result onUnauthorized(Context ctx) {
return unauthorized();
}
}
我希望能够从其他控制器中获取用户,就像他们在 Todo 控制器中所做的那样。
编辑:我的问题归结为您在 Play 2.7 中将经过身份验证的用户存储在哪里,因为 Http.Context 已被弃用?