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