【问题标题】:Handling redirect to a specific page处理重定向到特定页面
【发布时间】:2013-11-18 19:56:36
【问题描述】:

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

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

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

注解怎么做?

【问题讨论】:

    标签: playframework playframework-2.2 deadbolt


    【解决方案1】:

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

    1. 创建另一个 DeadboltHandler,称为 SubjectPresentHandler 之类的东西
    2. 实现 SubjectPresentHandler#onAuthFailure 方法以重定向到个人资料页面
    3. 注释您的注册方法

      @SubjectNotPresent(handler=SubjectPresentHandler.class)

    如果用户在场,这会导致授权失败。然后这将调用 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;
    }
    

    【讨论】:

    • 您好史蒂夫,感谢您的回答(以及您的插件)。你能看看这个question吗?谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-30
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    • 2017-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多