当从其他操作调用操作时,@Check 不起作用

Posted

技术标签:

【中文标题】当从其他操作调用操作时,@Check 不起作用【英文标题】:@Check does not work when action is called from other action 【发布时间】: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()。有什么想法可以让它表现得像这样吗?

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

但是为什么没有重定向呢?如果我的description 是正确的,那么应该有一个重定向和一个新的请求。 我也想知道,但我们需要查看您的代码和路线

以上是关于当从其他操作调用操作时,@Check 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

当从单个图像生成一个视频时,ffmpeg视频连接不起作用

Objective C - 当从按钮调用 VC 时,ViewController 的功能不起作用

当从 selectInput 中选择变量时,相关性不起作用,但在其他情况下运行得很好

Laravel 5.2:Auth::logout() 不起作用

当从视图启用滚动时,SWRevealViewController 平移手势不起作用

当从其父视图中删除第二个 ViewController 时,FirstViewController 不起作用