【问题标题】: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 并不适合这种条件切换,但您可以通过以下方式破解它:
- 创建另一个 DeadboltHandler,称为 SubjectPresentHandler 之类的东西
- 实现 SubjectPresentHandler#onAuthFailure 方法以重定向到个人资料页面
-
用
注释您的注册方法
@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;
}