处理重定向到特定页面

时间:2013-11-18 09:22:46

标签: playframework playframework-2.2 deadbolt

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

public static Result signup() {
     return ok(signup.render())
 }

但如果用户已经在场(那时他已经注册),则上述控制器必须将他重定向到他的个人资料页面:return ok(profilePage.render())

如何使用注释?

1 个答案:

答案 0 :(得分:2)

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

  1. 创建另一个DeadboltHandler,称为SubjectPresentHandler
  2. 实施SubjectPresentHandler#onAuthFailure方法以重定向到个人资料页面
  3. 使用

    注释您的注册方法

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

  4. 如果用户在场,则会导致授权失败。然后,它将调用SubjectPresentHandler#onAuthFailure来获得结果。

    但是,我个人会考虑在注册方法中添加一个简单的测试

    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;
    }