【问题标题】:@Check does not work when action is called from other action当从其他操作调用操作时,@Check 不起作用
【发布时间】:2011-07-05 14:06:04
【问题描述】:

我在 Controller 中有一个使用 @Check 注释保护的操作。

@With(Secure.class)
public class Application extends Controller {

    @Check("admin")
    public static void securedMethod() {
        //secured code
    }

当我从浏览器调用此操作时,它会从安全类调用布尔检查(字符串配置文件)。但是当我从另一个动作中调用这个动作时:

Application.securedMethod();

它只调用安全代码,省略 Security.check() 调用。我想,除非 Security.check() 返回 true,否则 @Check 不应该允许执行securedMethod()。有什么想法可以让它表现得像这样吗?

【问题讨论】:

    标签: security playframework


    【解决方案1】:

    原因是安全控制器的工作方式。 @Check 注释仅在请求开始时通过使用@Before 注释的方法进行验证。您可以在示例代码中看到它是如何完成的。

    通常这应该不是问题,因为您不应该从具有较少安全限制的方法调用具有较大限制的方法(因为它可能导致安全问题)。在您的情况下,您应该验证您正在使用的工作流程,因为您可能希望避免该调用。

    【讨论】:

    • 但是为什么没有重定向呢?如果我的description 是正确的,那么应该有一个重定向和一个新的请求。
    • 我也想知道,但我们需要查看您的代码和路线
    猜你喜欢
    • 1970-01-01
    • 2016-06-11
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-13
    相关资源
    最近更新 更多