Symfony 基于令牌的身份验证http拦截器

Symfony 基于令牌的身份验证http拦截器,symfony,angular-http-interceptors,Symfony,Angular Http Interceptors,我想听听你的意见,以便有所成就。我有一个api,我想限制用户的访问。但是短篇故事,在页面/登录的实际登录控制器中,我为经过身份验证的用户生成令牌并返回它。嗯,我的一个问题来了。在动作控制器中,必须返回一个响应,我的令牌以json格式发送,并显示在浏览器上,但我不想这样,我只想保持响应或某种形式,以便我的角度部分能够获取该令牌并以其方式处理它。因此,我的方法是登录: public function loginAction(Request $request) { $username=

我想听听你的意见,以便有所成就。我有一个api,我想限制用户的访问。但是短篇故事,在页面/登录的实际登录控制器中,我为经过身份验证的用户生成令牌并返回它。嗯,我的一个问题来了。在动作控制器中,必须返回一个响应,我的令牌以json格式发送,并显示在浏览器上,但我不想这样,我只想保持响应或某种形式,以便我的角度部分能够获取该令牌并以其方式处理它。因此,我的方法是登录:

  public function loginAction(Request $request)
{

    $username= $this->get('security.token_storage')->getToken()->getUser()->getEmail();
    $serviceUser = $this->container->get('ubb_user_login');
    $tokenUser = $serviceUser->generateToken($username);
    $response = new JsonResponse(array('Token' => $tokenUser));

    return $response;
}
第二个问题。我不知道从哪里提取令牌。在控制器中,我尝试了一些东西:

app.controller('loginApi', function ($scope, $http, $window){

$http.get(
    '/api/user/login'
).then(function (success) {
    $scope.token = success.data.Token;
    $window.localStorage.setItem('Token', token); // it's okay used like this localStorage?
});
});
在这里,我只想从/login操作获取令牌,将其保存在本地存储中,然后使用$http请求拦截器在每个请求上显示它。那部分有效。如果我在header auth中发送了一个随机字符串,它正在工作,并允许我访问api:

function httpInterceptor() {
return {
    request: function(config) {
        config.headers.authorization = 'jdjdnnkdkd';
        return config;
    },
    responseError: function(errorResponse) {
        switch (errorResponse.status) {
            case 403:
                window.location = '/login';
                break;
            case 401:
                window.location = '/login';
        }
        return $q.reject(errorResponse);
    }
 }
 }
因此,我遇到的问题是: 1) 如何发送令牌以使angular获取令牌,但不在浏览器中显示?假设我有一个访问api的菜单,如果用户没有验证,单击未经验证的链接,它会在登录页面上发送给我,在我成功验证后,在菜单上重定向我? 2) 返回令牌后,在何处使用它?哪个控制器?如何拯救它


非常感谢您。

您似乎需要一个单独的api资源来处理令牌。你试过使用吗?它在设置oauth身份验证、令牌等方面有很大帮助

通常,您需要单独调用令牌,即:

  • angluar应用程序向
    get token
    资源发出请求,返回一个token并临时存储在angluar应用程序中
  • 为每个后续请求使用该令牌-检查oauth bundle配置,了解如何设置哪些URL必须受oauth保护,但该bundle会为您解决这个问题

关于你的角度问题,看看这个q/a

谢谢你的回答,但我想用我的想法,我已经实现了Auth令牌,它通过给定的令牌返回给我用户,唯一的部分就是这个。如何发送它。你能给我一些信息让这个工作吗?