目录
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,内容如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

<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方法:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

<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基本

华为将在智能穿戴领域推出玄玑感知系统 可根据心率评估用户情绪状态 华为将在智能穿戴领域推出玄玑感知系统 可根据心率评估用户情绪状态 Aug 29, 2024 pm 03:30 PM

近日,华为宣布将于9月推出一款搭载玄玑感知系统的全新智能穿戴新品,预计为华为的最新智能手表。该新品将集成先进的情绪健康监测功能,玄玑感知系统以其六大特性——准确性、全面性、快速性、灵活性、开放性和延展性——为用户提供全方位的健康评估。系统采用超感知模组,优化了多通道光路架构技术,大幅提升了心率、血氧和呼吸率等基础指标的监测精度。此外,玄玑感知系统还拓展了基于心率数据的情绪状态研究,不仅限于生理指标,还能评估用户的情绪状态和压力水平,支持超过60项运动健康指标监测,涵盖心血管、呼吸、神经、内分泌、

See all articles