【问题标题】:In CakePHP, how do I create an Access Denied route?在 CakePHP 中,如何创建拒绝访问路由?
【发布时间】:2011-06-08 14:54:19
【问题描述】:

在阅读设置 Auth 和 ACL 组件的教程时,我发现当登录用户访问我的站点中他们无权访问的区域时,他们会被重定向到 /。

这不是一个显示停止器,因为我总是可以从我的主页视图将它们重定向到适当的位置,或者只是在那里显示一个错误,但这似乎有点 hacky。如果用户无权访问特定视图,是否有办法指定 ACL 应将用户重定向到何处?在这种情况下,我只想设置一个简单的全局访问被拒绝错误页面。即使让它再次将它们重定向到登录页面也是可以接受的,但主页似乎是系统使用的一个非常奇怪的默认设置。

【问题讨论】:

  • 使用 Session.Flash() 语句显示错误有什么问题?
  • 什么都没有——在我的错误页面上,这正是我想做的。我只是不希望我的错误页面也成为主页。

标签: php cakephp acl


【解决方案1】:

您可以设置 $this->Auth->authorize = 'controller',然后在 isAuthorized() 回调中指定重定向。

http://book.cakephp.org/view/1275/authorize

http://api13.cakephp.org/view_source/auth-component/#line-508

您还可以测试 $this->Auth->user() 以获得足够的权限并在失败时重定向:

if ($this->Auth->user('level') < 2) {
    $this->redirect('/users/declined');
}

否则,Auth->redirect() 会提取登录重定向属性设置的任何内容,默认为 /。见http://api13.cakephp.org/view_source/auth-component/#line-745

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 2013-11-11
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 2021-04-13
    • 1970-01-01
    相关资源
    最近更新 更多