当从其他操作调用操作时,@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 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Objective C - 当从按钮调用 VC 时,ViewController 的功能不起作用
当从 selectInput 中选择变量时,相关性不起作用,但在其他情况下运行得很好
Laravel 5.2:Auth::logout() 不起作用