目錄
Laravel5中集成Jasig cas统一认证系统,laravel5jasig
首頁 後端開發 php教程 Laravel5中集成Jasig cas统一认证系统,laravel5jasig_PHP教程

Laravel5中集成Jasig cas统一认证系统,laravel5jasig_PHP教程

Jul 12, 2016 am 08:57 AM
cas 系統 統一 認證 整合

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/

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1109448.htmlTechArticleLaravel5中集成Jasig cas统一认证系统,laravel5jasig CAS : CAS(Central Authentication Service)是一款不错的针对 Web 应用的单点登录框架,这里介绍下我刚...
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

CUDA之通用矩陣乘法:從入門到熟練! CUDA之通用矩陣乘法:從入門到熟練! Mar 25, 2024 pm 12:30 PM

通用矩陣乘法(GeneralMatrixMultiplication,GEMM)是許多應用程式和演算法中至關重要的一部分,也是評估電腦硬體效能的重要指標之一。透過深入研究和優化GEMM的實現,可以幫助我們更好地理解高效能運算以及軟硬體系統之間的關係。在電腦科學中,對GEMM進行有效的最佳化可以提高運算速度並節省資源,這對於提高電腦系統的整體效能至關重要。深入了解GEMM的工作原理和最佳化方法,有助於我們更好地利用現代計算硬體的潛力,並為各種複雜計算任務提供更有效率的解決方案。透過對GEMM性能的優

华为乾崑 ADS3.0 智驾系统 8 月上市 享界 S9 首发搭载 华为乾崑 ADS3.0 智驾系统 8 月上市 享界 S9 首发搭载 Jul 30, 2024 pm 02:17 PM

7月29日,在AITO问界第四十万台新车下线仪式上,华为常务董事、终端BG董事长、智能汽车解决方案BU董事长余承东出席发表演讲并宣布,问界系列车型将于今年8月迎来华为乾崑ADS3.0版本的上市,并计划在8月至9月间陆续推送升级。8月6日即将发布的享界S9将首发华为ADS3.0智能驾驶系统。华为乾崑ADS3.0版本在激光雷达的辅助下,将大幅提升智驾能力,具备融合端到端的能力,并采用GOD(通用障碍物识别)/PDP(预测决策规控)全新端到端架构,提供车位到车位智驾领航NCA功能,并升级CAS3.0全

常用常新!華為Mate60系列升級HarmonyOS 4.2:AI雲端增強、小藝方言太好用了 常用常新!華為Mate60系列升級HarmonyOS 4.2:AI雲端增強、小藝方言太好用了 Jun 02, 2024 pm 02:58 PM

4月11日,華為官方首次宣布HarmonyOS4.2百機升級計劃,此次共有180餘款設備參與升級,品類覆蓋手機、平板、手錶、耳機、智慧螢幕等設備。過去一個月,隨著HarmonyOS4.2百機升級計畫的穩定推進,包括華為Pocket2、華為MateX5系列、nova12系列、華為Pura系列等多款熱門機型也已紛紛展開升級適配,這意味著會有更多華為機型用戶享受到HarmonyOS帶來的常用常新體驗。從使用者回饋來看,華為Mate60系列機種在升級HarmonyOS4.2之後,體驗全方位躍升。尤其是華為M

蘋果16系統哪個版本最好 蘋果16系統哪個版本最好 Mar 08, 2024 pm 05:16 PM

蘋果16系統中版本最好的是iOS16.1.4,iOS16系統的最佳版本可能因人而異添加和日常使用體驗的提升也受到了很多用戶的好評。蘋果16系統哪個版本最好答:iOS16.1.4iOS16系統的最佳版本可能因人而異。根據公開的消息,2022年推出的iOS16被認為是一個非常穩定且性能優越的版本,用戶對其整體體驗也相當滿意。此外,iOS16中新功能的新增和日常使用體驗的提升也受到了許多用戶的好評。特別是在更新後的電池續航力、訊號表現和發熱控制方面,使用者的回饋都比較正面。然而,考慮到iPhone14

Linux與Windows系統中cmd指令的差異與相似之處 Linux與Windows系統中cmd指令的差異與相似之處 Mar 15, 2024 am 08:12 AM

Linux和Windows是兩種常見的作業系統,分別代表了開源的Linux系統和商業的Windows系統。在這兩種作業系統中,都存在著命令列介面,用於使用者與作業系統互動。在Linux系統中,使用者使用的是Shell命令列,而在Windows系統中,使用者使用的是cmd命令列。 Linux系統中的Shell命令列是一個非常強大的工具,可以完成幾乎所有的系統管理任

Oracle資料庫中修改系統日期方法詳解 Oracle資料庫中修改系統日期方法詳解 Mar 09, 2024 am 10:21 AM

Oracle資料庫中修改系統日期方法詳解在Oracle資料庫中,修改系統日期的方法主要涉及修改NLS_DATE_FORMAT參數和使用SYSDATE函數。本文將詳細介紹這兩種方法及其具體的程式碼範例,幫助讀者更好地理解並掌握在Oracle資料庫中修改系統日期的操作。一、修改NLS_DATE_FORMAT參數方法NLS_DATE_FORMAT是Oracle數據

Oracle API整合策略解析:實現系統間無縫通信 Oracle API整合策略解析:實現系統間無縫通信 Mar 07, 2024 pm 10:09 PM

OracleAPI整合策略解析:實現系統間無縫通信,需要具體程式碼範例在當今數位化時代,企業內部系統之間需要相互通信和資料共享,而OracleAPI就是幫助實現系統間無縫通信的重要工具之一。本文將從OracleAPI的基本概念和原則入手,探討API整合的策略,最終給出具體的程式碼範例幫助讀者更好地理解和應用OracleAPI。一、OracleAPI基本

系統字體儲存路徑在哪裡 系統字體儲存路徑在哪裡 Feb 19, 2024 pm 09:11 PM

系統字體在哪個資料夾在現代的電腦系統中,字體起著至關重要的作用,它影響著我們的閱讀體驗和文字表達的美觀程度。而對於一些熱衷於個人化設定和自訂的使用者來說,了解系統字體的儲存位置就顯得尤為重要。那麼,系統字體究竟會保存在哪個資料夾呢?本文將為大家一一揭曉。在Windows作業系統中,系統字型存放在一個名為「Fonts」的資料夾裡。這個資料夾預設位於C碟的Win

See all articles