你能把这个Security.Authenticator的例子转换成scala吗?
这是一个正在使用的身份验证实现示例:你能把这个Security.Authenticator的例子转换成scala吗?,scala,authentication,playframework-2.0,Scala,Authentication,Playframework 2.0,这是一个正在使用的身份验证实现示例: package controllers; import play.*; import play.mvc.*; import play.mvc.Http.*; import models.*; public class Secured extends Security.Authenticator { @Override public String getUsername(Context ctx) { return ctx
package controllers;
import play.*;
import play.mvc.*;
import play.mvc.Http.*;
import models.*;
public class Secured extends Security.Authenticator {
@Override
public String getUsername(Context ctx) {
return ctx.session().get("email");
}
@Override
public Result onUnauthorized(Context ctx) {
return redirect(routes.Application.login());
}
}
但这是用Java编写的,我需要将其转换为Scala。这是我尝试过的,但不起作用。无法找到重定向方法
package controllers
import play.mvc.Security
import play.mvc.Http.Context
import play.mvc.Result
import play.mvc.Results.Redirect
class Secured extends Security.Authenticator {
override def getUsername(ctx: Context) : String = {
"username_placeholder"
}
override def onUnauthorized(ctx: Context) : Result = {
// Cannot find reference to redirect!
redirect(routes.Application.index())
}
}
重定向实际上是一个超类中的静态方法。因此,我尝试创建一个同伴对象,用未授权的def进行保护。但是这样做不起作用。您应该能够调用重定向,就好像
重定向
所在的类是一个对象:play.mvc.Results.redirect(…)
(假设您没有在其他地方寻找任何其他可能的重载)。谢谢您的否决票