【发布时间】:2014-02-27 16:21:56
【问题描述】:
有没有办法对typo3中的特定控制器(动作)进行密码保护? 我想提供一个包含在标准控制器中的基本 REST 服务,但它不应该对每个人都可以访问,而只有知道用户/通行证的人才能访问。
【问题讨论】:
标签: .htaccess controller action typo3 extbase
有没有办法对typo3中的特定控制器(动作)进行密码保护? 我想提供一个包含在标准控制器中的基本 REST 服务,但它不应该对每个人都可以访问,而只有知道用户/通行证的人才能访问。
【问题讨论】:
标签: .htaccess controller action typo3 extbase
与 TYPO3 Flow 相比,Extbase 不包含安全框架。因此,默认情况下,每个人都可以访问每个操作(即插件操作列表中的操作)。
您有多种可能限制 TYPO3 方面的访问,但由于我不知道您如何使用 REST 服务和处理身份验证(您应该在问题中添加更多详细信息!)很难选择正确的一个。
如果内容是通过 Fluid 交付的,您可以使用 Fluid 安全 ViewHelpers,其工作方式类似于 if 条件:
<f:security.ifHasRole [...]
<f:security.ifAuthenticated [...]
但很可能你不是。在控制器上下文中,我建议在控制器中添加一个用户组检查功能并在执行控制器操作之前调用它:
/**
* Checks if the current user is a certain group
*
* @return void
*/
public function checkUserHasPermission() {
if (in_array($this->settings['allowedFeUserGroup'], $GLOBALS['TSFE']->fe_user->groupData['uid'])) {
$this->userIsAdmin = TRUE;
}
}
然后您将一个组添加到允许的前端用户并在您的设置中定义它。如果用户没有权限,则拒绝访问(并可能重定向到登录)。
【讨论】:
一种方法是使用您的特定控制器网址,例如
SetEnvIf Host "www\.your-link\.com/index.php?query" is_on_protected_site
Order deny,allow
Deny from env=is_on_protected_site
Satisfy any
AuthType Basic
AuthName "Access"
AuthUserFile /path/to/.htpasswd
Require valid-user
【讨论】: