国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Masalah dengan membina kawalan kebenaran automatik + menu + serbuk roti dalam symfony2
PHPz
PHPz 2017-05-16 16:44:27
0
1
734

Saya telah menggunakan rangka kerja lain seperti TP dan CI untuk memenuhi keperluan di atas, dan ia boleh direalisasikan dengan mudah. Baru-baru ini, saya juga ingin melaksanakannya pada SF2 dan menulis adminBundle untuk membuat bahagian belakang secara automatik untuk menyediakan fungsi biasa. Namun, saya menghadapi masalah berikut:
Memandangkan saya ingin mengesan kebenaran akses pengguna secara global di latar belakang, saya mendengar pengawal Dapatkan maklumat permintaan sebelum setiap pengawal dicetuskan dan semak sama ada pengguna telah memberikan kebenaran yang sepadan. Kodnya adalah seperti berikut:

class RunActListener {
protected $securityContext;
   public function __construct(SecurityContextInterface $securityContext)
       $this->securityContext = $securityContext;
   }
   public function onRunAct(FilterControllerEvent $event) {
      $request = $event->getRequest();
      $ajax = $request->isXmlHttpRequest();
      if (preg_match('/^\/admin/', $request->getRequestUri())) {
      $routeName = $request->get('_route');
      if ($this->securityContext->isGranted(array($routeName))) {
      } else {
     $reffeer = $request->server->get('HTTP_REFERER');
           $data['info'] = '您沒(méi)有權(quán)限操作!';
           $data['status'] = false;
           if ($ajax) {
           $event->setController(
              function() use ($data) {
                return new JsonResponse($data);
                });
                } else {
                $event->setController(
                function() use ($data) {
                return new Response('<b>您沒(méi)有足夠的訪問(wèn)權(quán)限!</b><script>setTimeout("window.history.back(-1)",2000)</script>');
                });
                //。。。。。

Kemudian saya memperkenalkan 2 render dalam susun atur latar belakang Kod menu dan serbuk roti adalah seperti berikut:

 <nav id="navigation" class="collapse">
    <ul>
     {{ render(controller( 'CwpUtilBundle:Menu:showMenu')) }}
    </ul>
 </nav>
 </aside>
 <p id="sidebar-separator"></p>
   <section id="main" class="clearfix">
   <p id="main-header" class="page-header">
    {{ render(controller( 'CwpUtilBundle:Menu:showCrumb')) }}
  </p>
  <p id="main-content">
   {% block main %}
   {% endblock %}
   </p>
  </section>

Dengan cara ini, 2 sub_requests dimulakan, tetapi keperluan saya ialah mendapatkan url permintaan induk dalam sub_request untuk melaksanakan serbuk roti dan menu saya. Terdapat beberapa masalah dalam SF Seseorang mencadangkan untuk menggunakan tindanan permintaan dalam sub tindakan

/**
* 顯示面包屑
* @return type
*/
public function showCrumbAction() {
$request = $this->container->get('request');
$path = $request->server->get('REDIRECT_URL');
$path_arr = explode('/', $path);
$path_len = count($path_arr);
$top_index = (int) ($path_len - 2);
$path_top = $path_arr[$top_index];
$route_arr = $this->get('router')->match($path);
$route = $route_arr['_route'];
$em = $this->getDoctrine()->getManager();
//獲取菜單結(jié)果集
$top_menu = $em->getRepository('CwpUtilBundle:Menu')->findOneByNode($path_top);
$sec_menu = $em->getRepository('CwpUtilBundle:Menu')->findOneByNode($route);
return $this->render('CwpUtilBundle:Layout:crumb.html.twig', array(
'top_menu' => $top_menu,
'sec_menu' => $sec_menu,
));
}

Saya cuba mendapatkan request_stack dalam tindakan di atas, tetapi sebaik sahaja saya mendapat, nampaknya permintaan telah dimulakan dalam tindakan ini, pendengar saya telah dicetuskan, dan kemudian dilaksanakan yang lain, melompat ke gesaan bahawa anda mempunyai kebenaran yang tidak mencukupi. Saya keliru dan tidak tahu mengapa.

PHPz
PHPz

學(xué)習(xí)是最好的投資!

membalas semua(1)
伊謝爾倫

Pendengar yang memantau kernel.controller, menambah pertimbangan dan hanya menyemak kebenaran apabila permintaan utama dibuat:

if ($event->isMasterRequest()) {
    // 才做檢查
}

FilterControllerEvent dalam 2.3 tidak mempunyai kaedah ini, cuma rujuk logik ini dan tulis sendiri:
https://github.com/symfony/symfony/blob/2.7/src/Symfony/Component/HttpKernel/Event/KernelEvent.php #L100

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan