cgiで会員制のページを作っています。
仮にこれをAサイト。
このAサイトにログインするためには、まったく別もののBサイトからAサイトログインページに遷移させます。
そしてこの時のログインは、Bサイトの会員情報を使ってログイン可能となります。
ログイン後Bサイトのセッション情報をAサイトのセッションに渡している仕組みです。
※AサイトはPerl、BサイトはEC-cube PHPで作られています。
問題は、Aサイトを検索エンジンで検索した際に通常ならログイン後にしか見れないページが表示されてしまいます。
そこで、セッションが保存されていない場合は、ログインページにリダイレクトするようにしたいです。
Bサイトのセッション情報をAサイトのセッションに渡している仕組みは、BサイトのPHPに書いてます。
ただBサイトから渡されたセッションをAサイトで有無をチェックする方法がわかりません。
Perlは全く無知なので教えていただきたいです。
よろしくお願いいたします。
下記参考URLです。
リンク内容
Aサイト:ログイン画面
CGI
1#!/usr/bin/perl 2 3use CGI; 4use CGI::Session; 5 6my $session = new CGI::Session("driver:File", undef, {Directory=>'/tmp'}); 7 8# セッションにデータを格納 9$session->param('f_name', 'Sherzod'); 10# or 11$session->param(-name=>'l_name', -value=>'Ruzmetov'); 12 13# データの回収 14my $f_name = $session->param('f_name'); 15# または 16my $l_name = $session->param(-name=>'l_name'); 17
Bサイト:ログインのコントローラー
PHP
1public function vet_job_login(Application $app, Request $request) 2{ 3if ($app->isGranted('IS_AUTHENTICATED_FULLY')) { 4log_info('認証済のためログイン処理をスキップ'); 5 6 7 8$actionUrl='http://***/***/***'; 9 10$Customer = $app->user(); 11$customer_id = $Customer['id']; 12$customer_mail = $Customer['email']; 13 14 15$content="<form style='display:none' name='submit_form' id='submit_form' action='{$actionUrl}' method='post'> 16<input type='text' name='customer_id' value='{$customer_id}'> 17<input type='text' name='email' value='{$customer_mail}'> 18</form> 19<script type='text/javascript'> 20document.submit_form.submit(); 21</script>"; 22 23exit($content); 24} 25 26$builder = $app['form.factory'] 27->createNamedBuilder('', 'customer_login'); 28 29$form = $builder->getForm(); 30return $app->render('Mypage/vet_job_login.twig', array( 31'error' => $app['security.last_error']($request), 32'form' => $form->createView(), 33)); 34}
細かいですが。PealではなくPerl では?(読み方は「パール」です) ちなみに現在のコードはpl,cgiどちらで書かれているのでしょう?念のため、ソースコードもご提示願います。「調べた内容や記事」も追記すると具体的な回答がつきやすくなります。
「ブラウザ検索してログイン」のところも具体的に要件を書かれた方が良いかと。
あと、以前はcakephp3でされていたようですが、今回Perlにされたのは何かありましたか?(すみませんこれは個人的な興味です)
いえ、ご指摘ありがとうございます!!!補足させていただきました。前任の者が作ったものです。改修の依頼があるので対応してます。あまりあれこれ手は出したくないのですが。。しょうがないです笑
セッション管理されていないのにどうやってログイン後の情報を保持しているのでしょうか。
もともとは「Aサイト」「Bサイト」は別のものです。今回「Bサイト」で登録されている会員情報を使って「Aサイト」にもログインできるようにしました
また、現在、ログイン後のページにログアウト状態でアクセスした場合はどうなるのでしょうか。
ドメイン、サーバーが違うのであればセッションの共有は無理ではないかと(どのようにログインできるようにしたかは知りませんが)
何も問題なくアクセスできてしまします。そのまま機能も使えます。
回答1件
あなたの回答
tips
プレビュー