定制 aldee07/api-auth-bundle 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

aldee07/api-auth-bundle

最新稳定版本:1.0.11

Composer 安装命令:

composer require aldee07/api-auth-bundle

包简介

Symfony2 Rest Helper

README 文档

README

NOTE: This project is still on work progress!

aldee-apiAuth-bundle

A Symfony2 Web Service Helper and Authentication Handler Bundle

I. Installation

Install the bundle via composer

composer require aldee07/api-auth-bundle

Register the bundle

// app/AppKernel.php
new JMS\SerializerBundle\JMSSerializerBundle(),   
new Aldee\ApiAuthBundle\ApiAuthBundle(),   

II. Configuration

To make things easier to use, I defined configurable settings as parameters. You can of course override the default configuration defined for this bundle. Here are the list of configurable parameter entries.

# app/config/config.yml -- but its up to you where as long as it is loaded in config and is under parameters context
parameters:
    aldeeapiauthbundle_config.user_provider: AppBundle\Security\UserProvider
    aldeeapiauthbundle_config.identifier: "apikey"
    aldeeapiauthbundle_config.asHeader: true

Parameters definition

  • aldeeapiauthbundle_config.user_provider - Required. The UserProvider class to load. You must create this UserProvider class on your own. This class is expected to implement Aldee\ApiAuthBundle\Security\ApiUserProviderInterface.

  • aldeeapiauthbundle_config.identifier - Optional. @see Aldee\ApiAuthBundle\Security\KeyAuthenticator::__construct( )

  • aldeeapiauthbundle_config.asHeader - Optional. @see Aldee\ApiAuthBundle\Security\KeyAuthenticator::__construct( )

  • aldeeapiauthbundle_config.allowCrossDomain - Optional. Whether or not allow cross domain. Default true

Security configuration

security:
    providers:
        aldeeapiauthbundle_user_provider:
            id: aldeeapiauthbundle_user_provider        
        #...

    firewalls:
        api:
            pattern: ^/api
            stateless: true # must be true
            simple_preauth:
                authenticator: aldeeapiauthbundle_key_authenticator
            provider: aldeeapiauthbundle_user_provider
        #...

UserProvider Configuration

Now that everything are all set, the last thing to do to make it work in accordance to your need is to create your custom UserProvider class by creating a UserProvider (see "Parameters definition") that implements a wrapper interface Aldee\ApiAuthBundle\Security\ApiUserProviderInterface.

namespace AppBundle\Security;

use AppBundle\Entity\MyUserEntity;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Security\Core\Exception\UnsupportedUserException;
use Aldee\ApiAuthBundle\Security\ApiUserProviderInterface;

class UserProvider implements ApiUserProviderInterface
{
    /**
     * @inheritdoc
     */
    public function getUsernameForApiKey($apiKey)
    {
        // your db fetching here and return username
        //...
    }
    
    /**
     * @inheritdoc
     */
    public function loadUserByUsername($username) 
    {
        $myUser = new MyUserEntity();
        
        // your db fetching here that hydrates to $myUser
        //...
        
        return $myUser;        
    }
    
    /**
     * @inheritdoc
     */
    public function refreshUser(UserInterface $user) 
    {
        throw new UnsupportedUserException();
    }
    
    /**
     * @inheritdoc
     */
    public function supportsClass($class)
    {
        return 'Symfony\Component\Security\Core\User\User' === $class;
    }
}

III. Usage

class DefaultController extends Controller
{    
    /**
     * @Route("/api/example.json", name="example")
     */
    public function indexAction()
    {
        $response = $this->get('aldeeapiauthbundle_response');
        
        // The data result to be sent back to the client
        $data = [1, 2, 3, 'hello', 'world', 'foo' => ['bar', 'baz']];
        
        // Your custom api result status code
        $statusCode = 1501;
        
        // Http status code to be sent in the header
        $httpCode = 200; 
        
        // The response format to use (xml|json|yml)
        $format = 'json';
        
        // Your custom api result message
        $message = 'Success!';

        $response->prepare($data, $statusCode, $message);
        
        return $response->dispatch($httpCode, $format);
    }
}

统计信息

  • 总下载量: 115
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 2
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: Unknown
  • 更新时间: 2015-06-16

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固