gpt4 book ai didi

php - CakePHP 在登录时根据用户名重定向

转载 作者:行者123 更新时间:2023-12-04 06:19:43 24 4
gpt4 key购买 nike

我有一个 CakePHP 1.3 应用程序,它有一个登录系统,运行良好。它使用一个带有用户表的数据库,该表在创建此应用程序之前就已存在。

我正在使用 授权 在我的 应用 Controller .登录功能看起来像

function login() {}

它位于 users_controller .

正如我所说,一切正常,但我在尝试添加新功能时遇到问题。我想,期间 登录 过程,检测用户是否引入了特定的登录名/密码组合(假设为 admin/adminpwd)。如果是这样,登录应该成功并且他将被带到管理区域(/admin/index)。否则,登录过程应该照常工作。

一旦进入该管理区域(由 admin_controller 控制),该用户应该能够执行一些操作 专属于他 , 对其他用户不(即使他们在浏览器上输入/admin/action)。

我已经阅读了 ACL,可能它会对此有所帮助,但是对于我真正需要的东西来说它似乎太复杂了。有没有简单的方法可以做到这一点?我想我应该修改登录功能,但我真的不知 Prop 体如何修改,如果还有其他什么我应该更改...有什么想法吗?

最佳答案

让我们看看一些代码......

class UsersController extends AppController {

// we're moving the variable to AppController!

public function login() {

$usrInfo = $this->Auth->user();

if (isset($usrInfo) {

// this index name might not be right. I'm going off memory please check this!
if (in_array($usrInfo['username'], $this->adminUsers)) {
// do your code here for admin users.
// could be a redirect or just changing the layout used
} else {
// is a user that is logged in but not in our admin list
}

}

}

要测试用户是否已登录,您需要执行以下操作:
class AppController extends Controller {

protected $adminUsers = array('joe_blow_uname', 'jane_blow_uname');

public function beforeFilter() {

$routing = Configure::read('Routing.admin');
$usrInfo = $this->Auth->user();

if (isset($this->params[$routing]) && isset($usrInfo)) {
if (!in_array($usrInfo['username'], $this->adminUsers)) {
// do code here for non-admin users using /admin prefix
}
}

}

}

如果这没有帮助,请告诉我。

或者更糟的是破坏了某些东西......

编辑:

这显然不是最好的方法。 ACL 或在您的数据库中设置某种组可能会更好。但是,对于小型站点来说,这是一种相对快速的方法,应该可以正常工作。

关于php - CakePHP 在登录时根据用户名重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6737337/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com