いくつかの単純なHTML / JavascriptアプリケーションでLaravels認証を使用しようとしています。
私がそれが理想的に機能すると思う方法はこれです:
私が抱えている問題は、ユーザーがPHPスクリプトにログインしているかどうかを確認することです。Laravelsセッションが利用できない(とそれを通じ共有session_start()
し、$_SESSION["auth"] = true
唯一のネイティブPHPセッションのLaravelsバージョンに変数を追加します)。
これらは私が持っている設定です app/config/session.php
return array(
'driver' => 'native',
'lifetime' => 120,
'files' => storage_path().'/sessions',
'connection' => null,
'table' => 'sessions',
'lottery' => array(2, 100),
'cookie' => 'laravel_session',
'path' => null,
'domain' => null,
);
null
ドメイン全体でセッションを使用したいので、パスをに変更しました。
含まれているPHPスクリプトは非常に単純で、次のようになります。
session_start();
if($_SESSION['authenticated']){
echo "logged_in";
} else {
header("Location: laravel/login/url");
}
Laravelsフレームワークにアプリケーションを含めるだけではないのはなぜか疑問に思われるかもしれません。これは、この単純なHTMLアプリケーションの約100の異なるバージョンが、10のドメイン名に散在しているためです。現時点では、すべてのドメイン名に独自の(非常に古くて安全でない)ログインスクリプト(新しいドメインが作成されるたびにコピーされます)。そのため、Laravelを使用して1つのデータベースと1つの管理システムでこれを一元化したいと思います。
うまくいけば、ここの誰かがこの問題を修正する方法または回避する方法を知っています(おそらく、PHPスクリプトでLaravelsセッションパッケージを使用する必要がありますか?)。
Laravelはセッション管理にストレージドライバーを使用します。つまり、PHPの$ _SESSION変数を介してコンテンツにアクセスしようとしても機能しません。あなたの設定はデフォルトのセッションドライバーを「ネイティブ」に設定しています。これは(私が思うに)ファイルセッションドライバーです。つまり、すべてのセッションデータはapp / storage / sessionsに保存されます(セッションデータはJSONのような構造で保存されると思います)。セッションドライバの詳細については、こちらをご覧ください。
したがって、あなたの質問に答えるために、これを解決するために頭に浮かぶいくつかの方法があります。私がおそらく行うことは、ユーザーがログインしているかどうかを単にチェックする単純なカスタムセッションインターフェイスを実装することです。laravelフォームを使用してユーザーを認証するときに、ユーザーのセッションをログインに設定できます。例えば:
if (Auth::attempt(array('email' => $email, 'password' => $password))) {
// Set your user's session to logged in here. You will have to implement some
// system to do so, the below code is INSECURE/NOT USEABLE
$_SESSION['user'] = $email;
}
そして、ユーザーがログアウトしたときに逆の操作を行います。上記のように、ユーザーのセッションをログインに設定するだけでは、さまざまな理由で非常に安全ではありません。最も明白なのは、セッションハイジャックです。(これはこのテーマに関する優れた読み物です)安全なセッション管理システムを実装できる場合(そして実際には、難しくはなく、軽量になるはずです)、この戦略が最善の策だと思います。
別の方法は、セッションドライバーとしてCookieを使用しようとすることですが、そうすると、最初に1つのCookieからLaravelセッションIDを取得し、それを使用して別のCookieを読み取る必要があるため、複雑さとゴミの層が増えます...エレガントなソリューションではありません。
したがって、最初に説明した方法を使用して、シンプルで安全なセッション管理システムを実装することをお勧めします。これがお役に立てば幸いです。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加