আমি ড্রুপাল 8 এ কাস্টম আরএসটিফুল লগইন ব্যবহার করি তবে কুকির সাথে নয়। এটি একটি মোবাইল অ্যাপ্লিকেশানের জন্য এবং প্রতিবার যখন আমার তথ্যের প্রয়োজন হয়, আমি একটি সাধারণ প্রমাণীকরণ ব্যবহার করি:
ড্রুপাল 8.2x যেহেতু আমাদের একটি মডিউলে 2 টি ফাইল দরকার:
কনফিগার / ইনস্টল ফোল্ডারে rest.ressource.user.rest_ressource.yml
langcode: en
status: true
dependencies:
module:
- basic_auth
id: user.rest_ressource
plugin_id: 'user_rest_ressource'
granularity: resource
configuration:
methods:
- GET
- PATCH
formats:
- json
authentication:
- basic_auth
আপনি ডিলিট / পোস্টের মতো আরও পদ্ধতি যুক্ত করতে পারেন
তারপরে আমাদের ফাইলটি দরকার
ইউএসআরসিআরআরসোর্স.পিএফপি এসসিআর / প্লাগইন / রেস্ট / রিসোর্সে
<?php
namespace Drupal\yourmodule\Plugin\rest\resource;
use Drupal\Core\Session\AccountProxyInterface;
use Drupal\rest\Plugin\ResourceBase;
use Drupal\rest\ResourceResponse;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Psr\Log\LoggerInterface;
/**
* Provides a resource to get view modes by entity and bundle.
*
* @RestResource(
* id = "user_rest_ressource",
* label = @Translation("User Rest"),
* uri_paths = {
* "canonical" = "/api/user/getInfo"
* }
* )
*/
class UserRestRessource extends ResourceBase {
/**
* A current user instance.
*
* @var \Drupal\Core\Session\AccountProxyInterface
*/
protected $currentUser;
/**
* Constructs a Drupal\rest\Plugin\ResourceBase object.
*
* @param array $configuration
* A configuration array containing information about the plugin instance.
* @param string $plugin_id
* The plugin_id for the plugin instance.
* @param mixed $plugin_definition
* The plugin implementation definition.
* @param array $serializer_formats
* The available serialization formats.
* @param \Psr\Log\LoggerInterface $logger
* A logger instance.
* @param \Drupal\Core\Session\AccountProxyInterface $current_user
* A current user instance.
*/
public function __construct(
array $configuration,
$plugin_id,
$plugin_definition,
array $serializer_formats,
LoggerInterface $logger,
AccountProxyInterface $current_user) {
parent::__construct($configuration, $plugin_id, $plugin_definition, $serializer_formats, $logger);
$this->currentUser = $current_user;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
return new static(
$configuration,
$plugin_id,
$plugin_definition,
$container->getParameter('serializer.formats'),
$container->get('logger.factory')->get('yourmodulename'),
$container->get('current_user')
);
}
/**
* Responds to GET requests.
*
* Returns a list of bundles for specified entity.
*
* @throws \Symfony\Component\HttpKernel\Exception\HttpException
* Throws exception expected.
*/
public function get() {
$uid=$this->currentUser->getAccount()->id();
$role=$this->currentUser->getAccount()->getRoles(1);
//here you can add your custom code
$responseResource=new ResourceResponse(
array()
);
return $responseResource;
}
/**
* Responds to PATCH requests.
*
* Returns a list of bundles for specified entity.
*
* @throws \Symfony\Component\HttpKernel\Exception\HttpException
* Throws exception expected.
*/
public function patch(){
}
}
GET / POST বা আপনার কনফিগারেশনে আপনি যে কোনও কিছু যুক্ত করেছেন তা গ্রহণের পদ্ধতির জন্য ডানদিকে যেতে ভুলবেন না।
এটির মাধ্যমে আপনি প্রতিটি কাস্টম সত্তার জন্য প্রতিটি কাস্টম REST ফাইল তৈরি করতে পারেন।
এবং আমার জেএস: কল করতে ভুলবেন না
yoursiteUrl / বাকি / অধিবেশন / টোকেন
টোকেন পেতে
$http({
method: 'GET',
url: 'siteUrl/api/user/getInfo?_format=json',
withCredentials:true,
headers: {
'Content-Type': "application/hal+json",
'X-CSRF-Token': token,
'Authorization': 'Basic ' + btoa(user+':'+password),
},
}).then(function successCallback(response) {
return response;
}, function errorCallback(response) {
return false;
});