使用安全和非安全方法Play Framework控制器。可能?

时间:2011-07-11 13:51:45

标签: security controller playframework

我尝试建立一个与会员和非会员区域进行游戏的网站。所以我有成员和非成员方法的控制器。但我只能使整个控制器安全[@With(Secure.class)]。 是否可能只保护一些方法并在没有登录的情况下访问其他方法?

由于

4 个答案:

答案 0 :(得分:3)

是的,你可以,虽然它需要对Secure类进行一些调整。如果你检查@Secure它有一个用@Before注释的方法。根据{{​​3}},您可以指出@Before应用于哪些方法以及跳过哪些方法。

@Before(unless="login")

所以这不是在公共方法上运行@Before的问题。请注意,使用@With可能无法正常工作,您可能需要在管理安全性的控制器中创建自己的@Before(在安全中调用正确的方法)。

但是只有2个控制器会更简单,一个用于安全用户,一个用于公共方法。

答案 1 :(得分:2)

你可以使用非常强大的deadbolt模块:http://www.playframework.org/modules/deadbolt

答案 2 :(得分:1)

不,没有简单的方法可以做到这一点。您可以检查角色,但不能检查已连接的用户,访客。

您必须添加@Before注释,这会有点复杂。只需将控制器分解为多个控制器即可。顺便说一下,这样做更好,而不是混淆公共/私人方法。

答案 3 :(得分:1)

是的,你可以这样做。如果要限制对已连接用户的访问,请删除@With注释并使用此安全控制器方法:

Secure.checkAccess();

使用此方法,您甚至可以使用@Check注释。示例:

    @Check("member")
    public static void restrictedAction() {
        Secure.checkAccess();
        ...
    }