Playframework 处理重定向到特定页面

Playframework 处理重定向到特定页面,playframework,playframework-2.2,deadbolt,Playframework,Playframework 2.2,Deadbolt,我正在使用授权。如果用户在场,我需要重定向他(subjectPresent)。例如,此控制器呈现注册页面: public static Result signup() { return ok(signup.render()) } 但是如果用户已经存在(那么他已经注册了),上面的控制器必须将他重定向到他的配置文件页面:returnok(profilePage.render()) 如何使用注释进行操作?Deadbolt实际上并不适用于这种条件切换,但您可以通过以下方式进行破解: 创建另

我正在使用授权。如果用户在场,我需要重定向他(
subjectPresent
)。例如,此控制器呈现注册页面:

public static Result signup() {
     return ok(signup.render())
 }
但是如果用户已经存在(那么他已经注册了),上面的控制器必须将他重定向到他的配置文件页面:
returnok(profilePage.render())


如何使用注释进行操作?

Deadbolt实际上并不适用于这种条件切换,但您可以通过以下方式进行破解:

  • 创建另一个DeadboltHandler,称为SubjectPresentHandler
  • 实现SubjectPresentHandler#onAuthFailure方法重定向到配置文件页面
  • 使用

    @SubjectNotPresent(处理程序=SubjectPresentHandler.class)

  • 如果用户在场,则会导致授权失败。然后调用SubjectPresentHandler#onAuthFailure以获得结果

    <> P>但是,我个人会考虑在“注册”方法中添加一个简单的测试:
    public static Result signup() {
        Result result;
        User user = // however you normally get your user
        if (user == null) {
            result = ok(signup.render())
        } else {
            result = redirect(routes.<your profile view method>);
        }
        return result;
    }
    
    公共静态结果注册(){
    结果;
    User=//但是您通常会得到您的用户
    if(user==null){
    结果=确定(signup.render())
    }否则{
    结果=重定向(路由);
    }
    返回结果;
    }
    
    你好,史蒂夫,谢谢你的回答(以及你的插件)。你能再看看这个吗?谢谢