我正在尝试将FOSUserBundle与HWIBundle集成,以便将社交媒体连接添加到我的应用程序中。FOSUser工作得很好,但是我在与HWIOAuthBundle集成时遇到了一个问题。
捆绑包完全加载到AppKernel中。
这是我的config.yml
hwi_oauth:
connect:
account_connector: my_user_provider
firewall_name: name
fosub:
username_iterations: 30
properties:
facebook: facebook_id
google: google_id
resource_owners:
facebook:
type: facebook
client_id: "%facebook_app_id%"
client_secret: "%facebook_app_secret%"
scope: ""
google:
type: google
client_id: "%google_app_id%"
client_secret: "%google_app_secret%"
scope: "https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile"
这是我的安全。yml:
security:
encoders:
FOS\UserBundle\Model\UserInterface: sha512
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_USER
providers:
fos_userbundle:
id: fos_user.user_provider.username_email
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
login_path: /login
check_path: /login_check
oauth:
resource_owners:
facebook: "/login/check-facebook"
google: "/login/check-google"
login_path: /login
failure_path: /login
oauth_user_provider:
service: my_user_provider
logout: true
anonymous: true
login:
pattern: ^/login$
security: false
remember_me:
key: "%secret%"
lifetime: 31536000 # 365 days in seconds
path: /
domain: ~ # Defaults to the current domain from $_SERVER
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/backend/, role: ROLE_ADMIN }
这是我的捆绑服务。yml
parameters:
my_user_provider.class: Main\SiteBundle\Services\FOSUBUserProvider
services:
my_user_provider:
class: "%my_user_provider.class%"
arguments: [@fos_user.user_manager,{facebook: facebook_id, google: google_id}]
这就是服务:
namespace Main\SiteBundle\Services;
use HWI\Bundle\OAuthBundle\OAuth\Response\UserResponseInterface;
use HWI\Bundle\OAuthBundle\Security\Core\User\FOSUBUserProvider as BaseClass;
use Symfony\Component\Security\Core\User\UserInterface;
class FOSUBUserProvider extends BaseClass
{
/**
* {@inheritDoc}
*/
public function connect(UserInterface $user, UserResponseInterface $response)
{
$property = $this->getProperty($response);
$username = $response->getUsername();
//on connect - get the access token and the user ID
$service = $response->getResourceOwner()->getName();
$setter = 'set'.ucfirst($service);
$setter_id = $setter.'Id';
$setter_token = $setter.'AccessToken';
//we "disconnect" previously connected users
if (null !== $previousUser = $this->userManager->findUserBy(array($property => $username))) {
$previousUser->$setter_id(null);
$previousUser->$setter_token(null);
$this->userManager->updateUser($previousUser);
}
//we connect current user
$user->$setter_id($username);
$user->$setter_token($response->getAccessToken());
$this->userManager->updateUser($user);
}
/**
* {@inheritdoc}
*/
public function loadUserByOAuthUserResponse(UserResponseInterface $response)
{
$username = $response->getUsername();
$user = $this->userManager->findUserBy(array($this->getProperty($response) => $username));
//when the user is registrating
if (null === $user) {
$service = $response->getResourceOwner()->getName();
$setter = 'set'.ucfirst($service);
$setter_id = $setter.'Id';
$setter_token = $setter.'AccessToken';
// create new user here
$user = $this->userManager->createUser();
$user->$setter_id($username);
$user->$setter_token($response->getAccessToken());
//I have set all requested data with the user's username
//modify here with relevant data
$user->setUsername($username);
$user->setEmail($username);
$user->setPassword($username);
$user->setEnabled(true);
$this->userManager->updateUser($user);
return $user;
}
//if user exists - go with the HWIOAuth way
$user = parent::loadUserByOAuthUserResponse($response);
$serviceName = $response->getResourceOwner()->getName();
$setter = 'set' . ucfirst($serviceName) . 'AccessToken';
//update access token
$user->$setter($response->getAccessToken());
return $user;
}
}
是的,这是我在浏览器中得到的错误:
第58行:服务hwi_oauth.security.oauth_utils依赖于不存在的服务hwi_oauth.resource_ownermap.name。
在做“作曲家更新”的时候,我明白了
[Symfony\Component\DependencyInject\Exc0019\ServiceNotFoundExc0019]服务hwi_oauth.security.oauth_utils依赖于不存在的服务hwi_oauth.resource_ownermap.name。
Script Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache处理更新后cmd事件时异常终止
[RuntimeException]执行“'cache:clear--no warmup'”命令时出错。
在配置中。yml您已将hwi_oauth配置为“防火墙名称:名称”。
但是在安全方面。yml您没有名为“name”的防火墙(但是您有一个名为“main”的防火墙,在config.yml的hwi_oauth中没有提到)。这会导致您收到错误消息。
问题内容: 我是基于注释编程的新手,并且不知道要为 org.springframework.transaction.annotation.Transactional 添加什么maven工件到我的pom.xml中,我用谷歌搜索(像搜索结果的前5页一样),但是找不到我在寻找。我使用的是Spring3。此外,如果有任何在线教程可以了解有关Spring注释的更多信息。谢谢!! 问题答案: 在spring-
今天,由于配置问题,Android Studio停止正常同步。 无法解析配置的所有文件: app: ProviderRepositoryDebugCompileClasspath。找不到firebase-analytics-impl.aar(com.google.firebase: Firebase-Analytics-impl: 15.0.2)。在以下位置搜索:https://jcenter.b
我已经浏览了许多关于类似问题的问题,但我找不到有效的解决方案。这可能是我对Android开发缺乏经验,但我不认为错误消息是那么清楚。我已经尝试过: 重建/清洁项目, 使缓存失效/重新启动、同步 带有 gradle 文件的项目, 我在设置中使用默认的 gradle 包装器, 有什么办法解决这个问题吗? 使用Android Studio版本:3.4.1 应用: 构建.gradle 项目:Build.g
本文向大家介绍SQL Agent服务无法启动的解决方法,包括了SQL Agent服务无法启动的解决方法的使用技巧和注意事项,需要的朋友参考一下 问题现象 从阿里云上镜像过来的一台数据库服务器,SQL Agent服务启动不了,提示服务启动后停止。(原数据库服务器是正常的,怀疑跟镜像有关) 如下是系统日志和SQL Agent的日志 2016-05-20 11:09:03 - ? [100] Micro
我对ivy没有解析我的一些依赖关系有问题。以下是我如何重现这个问题的: 我在eclipse中有一个空的java项目。我已经在我的项目中添加了ivy.xml: 这工作正常,ivy能够解决和下载口水。 如果我将修订版更改为6.3.0.Final(http://mvnrepository.com/artifact/org.drools/drools-core/6.3.0.Final),它将不起作用,我看
我已经在Android Studio创建了下面的应用程序。在运行时,我收到以下发布的错误。我检查了build.gradle文件,但不知道有什么问题。 问题是,Android Studio给出了一个错误在R.布局,并说:不能解决符号R 代码: 格拉德尔。建造: 错误 更新:我将compileSdkVersion、targetSdkVersion设置为23,minSdkVersion=19 现在我得到