質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Cookie

HTTPにおけるCookieとは、クライアントのウェブブラウザ上に保存された一時的なデータを指します。クライアント側のJavaScriptでも、サーバー側のHTTPヘッダーでもクッキーの読み書き・修正・削除が可能です。

セッション

Sessionはクライアントがサーバに送ったすべてのリクエストのことを指します。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

1回答

2044閲覧

laravel5.1 Authのremember機能を再現したい。

退会済みユーザー

退会済みユーザー

総合スコア0

Cookie

HTTPにおけるCookieとは、クライアントのウェブブラウザ上に保存された一時的なデータを指します。クライアント側のJavaScriptでも、サーバー側のHTTPヘッダーでもクッキーの読み書き・修正・削除が可能です。

セッション

Sessionはクライアントがサーバに送ったすべてのリクエストのことを指します。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2016/09/21 01:08

編集2016/09/21 03:09

※追記加えました

laravel5のセッション保存先はsession.phpで変更可能ですが、例えばcookieに設定した場合はデフォルトではlaravel_sessionに保存されます。このcookieではなく新たに作成したcookieにセッションを保存することってできないのでしょうか?例えば

$request->session()->put('key', value); $response->withCookie(cookie('name', 'value', $minutes));

上で作ったセッションを下で作ったcookieに保存するといった感じです。

【追記】
上記の方法は難しいとの指摘を受けたので、最終的にしたいことを書かせていただきます。

簡単に言えば標準で備わっているrember機能を再現したいのです。そんなの標準の機能最初から使えや!という話なのですが、開発環境が微妙に変わった感じなのと自分がバカなので標準のAuthではなく自作のログイン機能を作ることにしました。変わった環境というのはwebサーバーからDBへ行くのではなく、間にAPIを挟んでいることです。

laravelのコントローラー側 public function login_test(Request $request) { $login_id = $request->login_id; $pass = $request->password; $data =array('login_id'=>$login_id,'pass'=>$pass); $data = http_build_query($data, '', '&'); $url = 'urlをここに書いてます'; $header = ['Content-Type: application/x-www-form-urlencoded', 'Content-Length: '.strlen($data)]; $context = [ 'http' => [ 'method' => 'POST', 'header' => implode("\r\n", $header), 'content' => $data, 'ignore_errors' => true ] ]; $context = stream_context_create($context); $result = file_get_contents($url, false, $context); if($result == 1){ $request->session()->put('user', $login_id); return redirect('/'); }else{ return redirect('/login'); } }
APIの認証システム <?php //宣言 $login_id = $_POST['login_id']; $pass = $_POST['pass']; $pass= sha1($pass); //ログイン処理 $dsn='mysql:dbname=test;host=test'; $user='test'; $password='test'; $dbh=new PDO($dsn,$user,$password); $dbh->query('SET NAMES utf8'); $sql='SELECT * FROM kaus_customer WHERE email=? AND password=?'; $data[]=$login_id; $data[]=$pass; $stmt=$dbh->prepare($sql); $stmt->execute($data); $dbh=null; $rec=$stmt->fetch(PDO::FETCH_ASSOC); if($rec == true) { echo'1'; }else{ echo'0'; } ?>

簡単に言うとAPIの認証側でログインとパスが一致したら1を出力し、laravel側でsessionを発行してトップへリダイレクトするという形にしています。
このままの状態だとセッションはsession.phpで設定されている120分後には切れるんですが、rememberのような機能も追加したいのです。そこで前回セッションタイムアウトを任意でやる方法を質問させていただき解決方法も提示してくださったのですが、どうも動作が不安定なので別の方法を模索することにしました。考えたのは5年巻有効なcookieを新たに作ってそこにセッションを入れるという安直な考えです。しかしそれは難しいそうなので、何か別の考えがあればご助力お願いいたします。セッションタイムアウトが簡単に指定できればそもそもいいんですが・・

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

natady

2016/09/21 02:47

`illuminate/Session`の下を一通り見てみましたが、簡単にはいかなさそうです。どうしてそのような実装をしようと考えられたのか書いていただけますと、別のアプローチをからの解答も得られやすくなると思います。
natady

2016/09/21 05:10

認証APIやDBの改造は可能な環境ですか?
guest

回答1

0

ベストアンサー

laravelのコントローラーに直接phpを書くことで解決しました。

投稿2016/09/26 04:58

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問