有没有办法在typo3中用密码保护特定的控制器(动作)? 我想提供一个基本的REST服务,包含一个标准的控制器,但它不应该被所有人访问,而只能访问那些知道用户/传递的人。
答案 0 :(得分:2)
与TYPO3 Flow相比,Extbase不包含安全框架。因此,默认情况下,每个人都可以访问每个操作(即插件的操作列表中)。
你有几种可能限制TYPO3方面的访问,但由于我不知道你如何使用你的REST服务和处理身份验证(你应该在你的问题中添加更多细节!)很难选择正确的之一。
如果内容由Fluid提供,您可以使用与if条件类似的Fluid Security ViewHelpers:
<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;
}
}
然后,您将组添加到允许的前端用户,并在您的设置中对其进行定义。如果用户没有权限,则拒绝访问(并可能重定向到登录)。
答案 1 :(得分:1)
一种方法是使用您的特定控制器URL,如
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