java单点登录 权限管理,通用权限管理系统组件 中实现统一身份认证(Single Sign On,单点登录)附源码...

其实很多开发人员都早已经进入.NET时代了,更有不少都在ASP.NET MVC了,但是去年碰到一个客户还在用很古老的asp系统,而且有接近10来个各种应用系统都是用ASP开发的,这样一来想升级到C# ASP.NET还需要一个很漫长的过程。历史遗留下来的系统不是那么容易想说升级就升级,需要有统一规划,还需要系统的培训,有计划有目进行才能成功升级。

很多年没写asp的程序了看看代码就头大根本无从下手,也根本没心思把那么多系统进行重构那不知道要重构多长时间了,但是没办法只能硬着头皮上,以前的ASP老系统也要移植到通用权限管理系统的单点登录上来,在不知道这些情况的时候,就在客户面前牛也吹了,若不能实现这些功能了,这台阶也下不来了。春节期间正好休息没什么其他重要的事情需要处理,就完善一下ASP.NET与asp老系统的单点登录集成,下面把一些思路与做法写下来,给大家提供一个参考,有写得不足的地方,欢迎大家批评指导。

asp的实现好了后,php, java 等等各种各样的就同一个思路搞定就可以了,细节调试一下就可以了,方法思路都一样就可以了。

下面先看看程序的运行效果:

其中asp目录为当前验证单点登录的测试测试程序,只要引用几个函数就可以了。DotNet.WebForm 为通用权限管理系统中的当点登录实现网站,crm目录为asp.net的单点登录用例代码部分。

2012013101.jpg

若当前用户还没登录,系统会自动跳转到通用权限管理系统的登录页面中来。

2012013102.jpg

我们输入好用户名密码,进行登录验证

2012013103.jpg

系统会自动跳转到当前的asp系统里来了,而且显示出当前用户的登录主键,还可以获取很多信息,大家按需要改进一下函数就可以了,原先的asp系统只要小改一些内容就可以了,不用进行翻天覆地的重构,这个总比把老的asp系统彻底修改为asp.net来得快很多,以前的程序有的是稳定运行了很多年,经过很多细节的改进等,不是1-2天就可以转到asp.net上来,但是集成一下通用权限管理系统的单点登录功能,可能1-2天就可以集成好了,因为不需要对原来的系统进行翻天覆地的修改。

2012013104.jpg

asp 里可以很方便的读取到下面的所有参数,开发各种应用系统中常需要的参数也基本上足够可以调用了。

2012013105.jpg

下面的代码为参考代码:有些太简单了一些毕竟是部分代码开发而已,商业化的还是跟这个有些差别,就算是给大家提供一个参考吧。

copycode.gif

1

2

3

4    

5    

DotNet 单点登录的例子

6

7

8

9     Response.CodePage=65001

10     Response.Charset="UTF-8"

11

12'获取当前用户的主键13    FUNCTION GetUserId()

14'获得各种属性,就一行代码就可以了,同时会进行登录验证15        GetUserId = GetUser("Id")

16     END FUNCTION

17

18     FUNCTION GetUserRealName()

19'获得各种属性,就一行代码就可以了,同时会进行登录验证20        GetUserRealName = GetUser("RealName")

21     END FUNCTION

22

23

24'判断当前用户是否已经进行了登录25    FUNCTION Authentication()

26         userId = GetUserId()

27         IF ISNULL(userId) = FALSE THEN

28             Response.Write "单点登录验证成成功
"

29             Response.Write "当前用户主键为:" + userId + "
"

30         END IF

31         realName = GetUserRealName()

32         IF ISNULL(userId) = FALSE THEN

33             Response.Write "当前用户姓名为:" + realName + "
"

34         END IF

35     END FUNCTION

36

37

38'单点登录(Single Sign On , 简称 SSO )39    FUNCTION GetUser(key)

40         userProperty = NULL

41         ssoURL = "http://localhost/DotNet.WebForm/LogOn.aspx"

42         SET userCookies = request.Cookies()

43'如果Cookies为空,则说明没登录,调回统一身份认证系统首页,重新登录。44        IF LEN(userCookies) <= 0 THEN

45             Response.Redirect(ssoURL + "?ReturnURL=http://localhost/asp/Default.asp")

46         ELSE

47             FOR EACH cookie IN userCookies

48                 IF (cookie = "DotNet") THEN

49                     dotNetCookie = Request.Cookies(cookie)

50                     userProperty = Request.Cookies(cookie)(key)

51                     EXIT FOR

52                 END IF

53             NEXT

54         END IF

55         IF ISNULL(dotNetCookie) = TRUE OR dotNetCookie = "" THEN

56             Response.Redirect(ssoURL + "?ReturnURL=http://localhost/asp/Default.asp")

57         END IF

58'这里是处理返回值59        GetUser = userProperty

60     END FUNCTION

61

62'获取当前用户的主键,验证用户是否已进行登录操作63    Authentication()

64'列出所有的能获得的参数65    GetCookies()

66

67

68'测试函数,获取用户所有的Cookies69    FUNCTION GetCookies()

70         Response.Write "
读取当前浏览器中的Cookie:
"

71

72         DIM cookie,key

73         FOR EACH cookie IN Request.Cookies

74             IF Request.Cookies(cookie).haskeys THEN

75                 Response.Write "
Cookie 名字:"&cookie&"
--------------
"

76

77             FOR EACH key IN Request.Cookies(cookie)

78                 Response.Write "Key 名字:"&key&",值:"&Request.Cookies(cookie)(key)&"
"

79             NEXT

80             ELSE

81                 Response.Write "Cookie 名字:"&Request.Cookies(cookie)&"
"

82             END IF

83         NEXT

84     END FUNCTION

85

86 %>

87

88

89

copycode.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值