Laravel5中集成Jasig cas统一认证系统,laravel5jasig
Laravel5中集成Jasig cas统一认证系统,laravel5jasig
CAS : CAS(Central Authentication Service)是一款不错的针对 Web 应用的单点登录框架,这里介绍下我刚在laravel5上搭建成功的cas。提前准备工作:可运行的laravel5的工程,cas的服务器端已经存在。
环境:Linux(ubuntu)
一,下载phpcas源代码。
在laravel5的项目app目录下创建library目录,下载phpcas库,git clone https://github.com/Jasig/phpCAS.git,clone下来是一个phpcas的文件目录。
二,创建provider
在app下创建目录cas,创建CasAuthProvider.php,内容如下:
<span> 1</span> <?<span>php </span><span> 2</span> <span> 3</span> <span>namespace cas; </span><span> 4</span> <span> 5</span> <span>use</span><span> Illuminate\Contracts\Auth\UserProvider; </span><span> 6</span> <span>use</span><span> Illuminate\Contracts\Hashing\Hasher; </span><span> 7</span> <span>use</span><span> Illuminate\Contracts\Auth\Authenticatable; </span><span> 8</span> <span>use</span><span> Illuminate\Auth\GenericUser; </span><span> 9</span> <span>10</span> <span>class</span> CasAuthProvider <span>implements</span><span> UserProvider { </span><span>11</span> <span>12</span> <span>/*</span><span>* </span><span>13</span> <span> * Retrieve a user by their unique identifier. </span><span>14</span> <span> * </span><span>15</span> <span> * @param mixed $id </span><span>16</span> <span> * @return \Illuminate\Auth\UserInterface|null </span><span>17</span> <span>*/</span> <span>18</span> <span>public</span> <span>function</span> retrieveById(<span>$id</span><span>) { </span><span>19</span> <span>return</span> <span>$this</span>-><span>casUser(); </span><span>20</span> <span> } </span><span>21</span> <span>22</span> <span>/*</span><span>* </span><span>23</span> <span> * Retrieve a user by the given credentials. </span><span>24</span> <span> * </span><span>25</span> <span> * @param array $credentials </span><span>26</span> <span> * @return \Illuminate\Auth\UserInterface|null </span><span>27</span> <span>*/</span> <span>28</span> <span>public</span> <span>function</span> retrieveByCredentials(<span>array</span> <span>$credentials</span><span>) { </span><span>29</span> <span>return</span> <span>$this</span>-><span>casUser(); </span><span>30</span> <span> } </span><span>31</span> <span>32</span> <span>/*</span><span>* </span><span>33</span> <span> * Validate a user against the given credentials. </span><span>34</span> <span> * </span><span>35</span> <span> * @param \Illuminate\Auth\UserInterface $user </span><span>36</span> <span> * @param array $credentials </span><span>37</span> <span> * @return bool </span><span>38</span> <span>*/</span> <span>39</span> <span>public</span> <span>function</span> validateCredentials(Authenticatable <span>$user</span>, <span>array</span> <span>$credentials</span><span>) { </span><span>40</span> <span>return</span> <span>true</span><span>; </span><span>41</span> <span> } </span><span>42</span> <span>43</span> <span>protected</span> <span>function</span><span> casUser() { </span><span>44</span> <span>$cas_host</span> = \Config::get('app.cas_host'<span>); </span><span>45</span> <span>//</span><span>dump($cas_host);</span> <span>46</span> <span>$cas_context</span> = \Config::get('app.cas_context'<span>); </span><span>47</span> <span>$cas_port</span> = \Config::get('app.cas_port'<span>); </span><span>48</span> \phpCAS::<span>setDebug(); </span><span>49</span> \phpCAS::client(CAS_VERSION_2_0, <span>$cas_host</span>, <span>$cas_port</span>, <span>$cas_context</span><span>); </span><span>50</span> \phpCAS::<span>setNoCasServerValidation(); </span><span>51</span> <span>52</span> <span>if</span> (\phpCAS::<span>isAuthenticated()) { </span><span>53</span> <span>$attributes</span> = <span>array</span><span>( </span><span>54</span> 'id' => \phpCAS::getUser(), <span>55</span> 'name' => \phpCAS::<span>getUser() </span><span>56</span> <span> ); </span><span>57</span> <span>return</span> <span>new</span> GenericUser(<span>$attributes</span><span>); </span><span>58</span> } <span>else</span><span> { </span><span>59</span> <span>//</span><span>\phpCAS::setServerURL(\Config::get('app.url'));</span> <span>60</span> \phpCAS::<span>forceAuthentication(); </span><span>61</span> <span> } </span><span>62</span> <span>return</span> <span>null</span><span>; </span><span>63</span> <span> } </span><span>64</span> <span>65</span> <span>/*</span><span>* </span><span>66</span> <span> * Needed by Laravel 4.1.26 and above </span><span>67</span> <span>*/</span> <span>68</span> <span>public</span> <span>function</span> retrieveByToken(<span>$identifier</span>, <span>$token</span><span>) { </span><span>69</span> <span>return</span> <span>new</span> \<span>Exception</span>('not implemented'<span>); </span><span>70</span> <span> } </span><span>71</span> <span>72</span> <span>/*</span><span>* </span><span>73</span> <span> * Needed by Laravel 4.1.26 and above </span><span>74</span> <span>*/</span> <span>75</span> <span>public</span> <span>function</span> updateRememberToken(Authenticatable <span>$user</span>, <span>$token</span><span>) { </span><span>76</span> <span>return</span> <span>new</span> \<span>Exception</span>('not implemented'<span>); </span><span>77</span> <span> } </span><span>78</span> <span>79</span> <span>} </span><span>80</span> <span>81</span> ?>
三,修改config
在config/app.php中添加如下三个配置项:
'cas_host'=>'****', //认证服务器
'cas_context'=>'',//还没弄明白是什么
'cas_port'=>000,//认证服务端口
'url'=>'http://localhost/',
四,加载认证库
在app/providers/AppServiceProvider.php里,在类AppServiceProvider的register函数里添加认证方式:
Auth::extend('cas', function($app) {
return new CasAuthProvider;
});
修改app/config/auth.php认证driver:'driver' => 'cas',
在composer.json里配置加载项,在autoload里的classmap中添加如下路径:
"autoload": {
"classmap": [
**************
"app/library",
"app/library/phpCAS",
"app/cas"
]
}
在项目根目录下执行:composer dump-autoload
五,实现
在app/http/controllers/下创建CasAuthController.php,添加login和logout方法:
<span> 1</span> <span>public</span> <span>function</span><span> login() { </span><span> 2</span> <span> 3</span> <span>$message_error</span> = ""<span>; </span><span> 4</span> <span>if</span> (Auth::<span>check()) { </span><span> 5</span> <span> 6</span> } <span>else</span><span> { </span><span> 7</span> <span>if</span> (Auth::attempt(<span>array</span><span>())) { </span><span> 8</span> <span>//</span><span> Redirect to link after login</span> <span> 9</span> <span> } </span><span>10</span> <span>//</span><span> Redirect to un-logged in page</span> <span>11</span> <span> } </span><span>12</span> dump(\phpCAS::<span>getUser()); </span><span>13</span> dump(Auth::<span>user()); </span><span>14</span> <span> } </span><span>15</span> <span>16</span> <span>public</span> <span>function</span><span> logout() { </span><span>17</span> <span>18</span> <span>$cas_host</span> = \Config::get('app.cas_host'<span>); </span><span>19</span> <span>//</span><span>dump($cas_host);</span> <span>20</span> <span>$cas_context</span> = \Config::get('app.cas_context'<span>); </span><span>21</span> <span>$cas_port</span> = \Config::get('app.cas_port'<span>); </span><span>22</span> \phpCAS::<span>setDebug(); </span><span>23</span> \phpCAS::client(CAS_VERSION_2_0, <span>$cas_host</span>, <span>$cas_port</span>, <span>$cas_context</span><span>); </span><span>24</span> \phpCAS::<span>setNoCasServerValidation(); </span><span>25</span> \phpCAS::logoutWithRedirectService(\Config::get('app.url'<span>)); </span><span>26</span> }
在routes.php里添加路由规则就OK了,把项目默认的登陆和注销方法指到这里来,当login的时候,会出现服务器的登陆页面。
有个问题,就是这么改动之后,原来我设置的不需要登陆就能浏览的页面,现在进入的时候也会跳出登陆页面,不知道为什么,希望高手指导下,谢谢!
参考:https://sonnguyen.ws/how-to-integrate-phpcas-in-laravel/

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









General Matrix Multiplication (GEMM) は、多くのアプリケーションやアルゴリズムの重要な部分であり、コンピューター ハードウェアのパフォーマンスを評価するための重要な指標の 1 つでもあります。 GEMM の実装に関する徹底的な調査と最適化は、ハイ パフォーマンス コンピューティングとソフトウェア システムとハードウェア システムの関係をより深く理解するのに役立ちます。コンピューター サイエンスでは、GEMM を効果的に最適化すると、計算速度が向上し、リソースが節約されます。これは、コンピューター システムの全体的なパフォーマンスを向上させるために非常に重要です。 GEMM の動作原理と最適化方法を深く理解することは、最新のコンピューティング ハードウェアの可能性をより有効に活用し、さまざまな複雑なコンピューティング タスクに対してより効率的なソリューションを提供するのに役立ちます。 GEMMのパフォーマンスを最適化することで

7月29日、AITO Wenjieの40万台目の新車のロールオフ式典に、ファーウェイの常務取締役、ターミナルBG会長、スマートカーソリューションBU会長のYu Chengdong氏が出席し、スピーチを行い、Wenjieシリーズモデルの発売を発表した。 8月にHuawei Qiankun ADS 3.0バージョンが発売され、8月から9月にかけて順次アップグレードが行われる予定です。 8月6日に発売されるXiangjie S9には、ファーウェイのADS3.0インテリジェント運転システムが初搭載される。 LiDARの支援により、Huawei Qiankun ADS3.0バージョンはインテリジェント運転機能を大幅に向上させ、エンドツーエンドの統合機能を備え、GOD(一般障害物識別)/PDP(予測)の新しいエンドツーエンドアーキテクチャを採用します。意思決定と制御)、駐車スペースから駐車スペースまでのスマート運転のNCA機能の提供、CAS3.0のアップグレード

Apple 16 システムの最適なバージョンは iOS16.1.4 です。iOS16 システムの最適なバージョンは人によって異なります。日常の使用体験における追加と改善も多くのユーザーから賞賛されています。 Apple 16 システムの最適なバージョンはどれですか? 回答: iOS16.1.4 iOS 16 システムの最適なバージョンは人によって異なる場合があります。公開情報によると、2022 年にリリースされた iOS16 は非常に安定していてパフォーマンスの高いバージョンであると考えられており、ユーザーはその全体的なエクスペリエンスに非常に満足しています。また、iOS16では新機能の追加や日常の使用感の向上も多くのユーザーからご好評をいただいております。特に最新のバッテリー寿命、信号性能、加熱制御に関して、ユーザーからのフィードバックは比較的好評です。ただし、iPhone14を考慮すると、

4月11日、ファーウェイはHarmonyOS 4.2 100台のアップグレード計画を初めて正式に発表し、今回は携帯電話、タブレット、時計、ヘッドフォン、スマートスクリーンなどのデバイスを含む180台以上のデバイスがアップグレードに参加する予定だ。先月、HarmonyOS4.2 100台アップグレード計画の着実な進捗に伴い、Huawei Pocket2、Huawei MateX5シリーズ、nova12シリーズ、Huawei Puraシリーズなどの多くの人気モデルもアップグレードと適応を開始しました。 HarmonyOS によってもたらされる共通の、そして多くの場合新しい体験を楽しむことができる Huawei モデルのユーザーが増えることになります。ユーザーのフィードバックから判断すると、HarmonyOS4.2にアップグレードした後、Huawei Mate60シリーズモデルのエクスペリエンスがあらゆる面で向上しました。特にファーウェイM

Oracle データベースでのシステム日付の変更方法の詳細説明 Oracle データベースでのシステム日付の変更方法は、主に NLS_DATE_FORMAT パラメータの変更と SYSDATE 関数の使用です。この記事では、読者が Oracle データベースのシステム日付を変更する操作をよりよく理解し、習得できるように、これら 2 つの方法とその具体的なコード例を詳しく紹介します。 1. NLS_DATE_FORMAT パラメータメソッドの変更 NLS_DATE_FORMAT は Oracle データです

Linux と Windows は 2 つの一般的なオペレーティング システムで、それぞれオープン ソースの Linux システムと商用 Windows システムを表します。どちらのオペレーティング システムにも、ユーザーがオペレーティング システムと対話するためのコマンド ライン インターフェイスがあります。 Linux システムでは、ユーザーはシェル コマンド ラインを使用しますが、Windows システムでは、cmd コマンド ラインを使用します。 Linux システムのシェル コマンド ラインは、ほぼすべてのシステム管理タスクを完了できる非常に強力なツールです。

最近、ファーウェイは、Xuanjiセンシングシステムを搭載した新しいスマートウェアラブル製品を9月に発売すると発表しました。これはファーウェイの最新スマートウォッチとなる予定です。この新製品は、高度な感情的健康モニタリング機能を統合し、正確性、包括性、スピード、柔軟性、オープン性、拡張性という 6 つの特徴を備えた包括的な健康評価をユーザーに提供します。このシステムはスーパーセンシングモジュールを使用し、マルチチャンネル光路アーキテクチャ技術を最適化することで、心拍数、血中酸素、呼吸数などの基本的な指標の監視精度を大幅に向上させます。さらに、Xuanji センシング システムは、心拍数データに基づく感情状態の研究も拡張しており、生理学的指標に限定されず、ユーザーの感情状態やストレス レベルを評価することもでき、60 以上のスポーツのモニタリングをサポートしています。健康指標、心臓血管、呼吸器、神経、内分泌、

システム フォントはどのフォルダーにありますか? 現代のコンピューター システムでは、フォントは重要な役割を果たし、読書体験やテキスト表現の美しさに影響を与えます。パーソナライズやカスタマイズに熱心な一部のユーザーにとって、システム フォントの保存場所を理解することが特に重要です。では、システムフォントはどのフォルダーに保存されているのでしょうか?この記事では、それらを皆さんに一つずつ明らかにしていきます。 Windows オペレーティング システムでは、システム フォントは「Fonts」というフォルダーに保存されます。このフォルダーは、デフォルトでは Win C ドライブにあります。
