通用权限管理系统组件 中集成多个子系统的单点登录(网站入口方式)附源码

简介:

通用权限管理系统组件 (GPM - General Permissions Manager) 中集成多个子系统的单点登录(网站入口方式)附源码

 上文中实现了直接连接数据库的方式,通过配置文件,自定义的登录界面单点登录到通用权限管理系统的功能实现。这个方法不好的地方就是暴露了数据库连接,对系统的安全有严重的隐患,最好不要用直接访问数据库的方式进行多系统的单点登录,虽然这个比较简单,但是安全隐患太大,核心的底层数据库能接触的人越少越好尽量防止没必要的事情发生比较好,而且从多个系统登录时,每次都输入密码也很闹心。

  上文地址如下: 通用权限管理系统组件 (GPM - General Permissions Manager) 中集成多系统的统一登录(数据库源码级)附源码

  我们可以换个方式,建立统一的单点登录门户,然后所有的网站都登录到这个页面上,然后读取统一的Cookies,当然Cookies也可以按自己的需要进行加密解密处理的。很多人可能都会讲,你这个技术不行、安全性不行、这个那个的,其实有时候还真没必要过度设计,很公司的多内部关系系统,外面的人进也进不来,再其次大家工作完成了,谁都懒得多上一会儿公司的各种内部系统,只要好用简单就可以了,没几个人无聊了天天攻击自己公司内部的系统。大家都想早点儿下班早点儿回家陪老婆孩子就完事了,何必给自己找那么多麻烦了。

  而且有了源码后,想怎么加密解密,想怎么改进都可以,可以按自己的个性要求改进个彻底都没关系对吧。下面给大家参考一下,哪里觉得怎么做会更好就进行积极改进就ok了多听听大家的也没错,通用权限管理系统里的是如何实现多系统的统一单点登录的,参考代码如下:

// -----------------------------------------------------------------
//  All Rights Reserved , Copyright (C) 2012 , Hairihan TECH, Ltd .
// -----------------------------------------------------------------

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using DotNet.Utilities;

/// <summary>
///  _Default
///  单点登录的例子程序
///
///  修改纪录
///
///         2012-01-29 版本:1.0 JiRiGaLa 整理实现多系统的统一退出功能。
///
///  版本:1.0
///
/// <author>
/// <name> JiRiGaLa </name>
/// <date> 2012-01-29 </date>
/// </author>
/// </summary>
public partial class _Default : System.Web.UI.Page
{
private BaseUserInfo userInfo =  null;                        //  当前操作员信息对象
public BaseUserInfo UserInfo
   {
get
       {
if (Session[ " UserInfo "] !=  null)
           {
this.userInfo = (BaseUserInfo)Session[ " UserInfo "];
           }
if ( this.userInfo ==  null)
           {
//  从 Session 读取 当前操作员信息
if (Session[ " UserInfo "] ==  null)
               {
this.userInfo =  new BaseUserInfo();
//  获得IP 地址
this.userInfo.Id =  string.Empty;
this.userInfo.RealName = Context.Request.ServerVariables[ " REMOTE_ADDR "];
this.userInfo.UserName = Context.Request.ServerVariables[ " REMOTE_ADDR "];
this.userInfo.IPAddress = Context.Request.ServerVariables[ " REMOTE_ADDR "];
//  设置操作员类型,防止出现错误,因为不小心变成系统管理员就不好了
//  if (this.userInfo.RoleId.Length == 0)
// {
//     this.userInfo.RoleId = DefaultRole.User.ToString();
// }
               }
           }
return this.userInfo;
       }
set
       {
this.userInfo = value;
       }
   }

protected void Page_Load( object sender, EventArgs e)
   {
       //  这个是判断当前是否已经登录的函数
bool userIsLogOn = Utilities.UserIsLogOn();
this.btnLogOn.Enabled = !userIsLogOn;
this.btnLogOut1.Enabled = userIsLogOn;
this.btnLogOut2.Enabled = userIsLogOn;
   }

protected void btnLogOn_Click( object sender, EventArgs e)
   {
//  这是退出后需要重新定位的位置
string returnURL =  " http://localhost/CRM/Default.aspx ";
//  这里可以传递比较复杂的URL参数信息
       returnURL = Server.UrlEncode(returnURL);
//  这里是跳转到单点登录的位置
string url =  " http://localhost/DotNet.WebForm/LogOn.aspx?ReturnURL= " + returnURL;
//  进行重新定位
       Page.Response.Redirect(url);
   }


protected void btnLogOut1_Click( object sender, EventArgs e)
   {
//  先在本系统进行退出动作
       Utilities.Logout();
//  这是退出后需要重新定位的位置
string returnURL =  " http://localhost/CRM/Default.aspx ";
//  这里可以传递比较复杂的URL参数信息
       returnURL = Server.UrlEncode(returnURL);
//  这里是跳转到单点登录的位置
string url =  " http://localhost/DotNet.WebForm/LogOut.aspx?ReturnURL= " + returnURL;
//  进行重新定位
       Page.Response.Redirect(url);
   }

protected void btnLogOut2_Click( object sender, EventArgs e)
   {
//  先在本系统进行退出动作
       Utilities.Logout();
//  这是退出后需要重新定位的位置
string returnURL =  " http://localhost/CRM/Default.aspx ";
//  这里可以传递比较复杂的URL参数信息
       returnURL = Server.UrlEncode(returnURL);
//  这里是跳转到单点登录的位置
string url =  " http://localhost/DotNet.WebForm/LogOuting.aspx?ReturnURL= " + returnURL;
//  进行重新定位
       Page.Response.Redirect(url);
   }
}


系统的运行效果如下:

   所有系统的登录都导航到 通用权限管理系统的登录界面里来登录,这样可以通过通用权限权限管理系统的强大后台管理功能,彻底管理好帐户的登录限制等等。

   维护N多套代码,还不如维护一套通用权限管理系统的底层代码,折腾来折腾去,调试来调试去浪费时间,不如直接采用通用权限管理系统的省事省心,强大稳定,有良好售后服务,有良好的代码质量,可以放心使用。说白了就是花钱办事还是花时间办事的区别。

吉日嘎拉,通用权限管理系统组件

这个是模拟登录CRM系统的效果,下图表示系统还没登录

吉日嘎拉,通用权限管理系统组件

点击登录后,会跳转到通用权限管理系统的统一扽路页面,进行登录操作。

吉日嘎拉,通用权限管理系统组件

登录成功后,会自动跳转到当前的CRM系统,同时CRM系统还可以得到当前登录用户的用户详细信息,这些信息可以用在CRM系统的各种逻辑判断上了。

吉日嘎拉,通用权限管理系统组件

接下来是退出登录的提示信息,用户可以直接退出,也可以有提示信息的退出方式可以灵活选择

吉日嘎拉,通用权限管理系统组件

用户安全退出后,CRM系统里同步退出了。

吉日嘎拉,通用权限管理系统组件

通用权限管理不仅仅是权限管理同时也是强大稳定的简易单点登录系统,并提供相关的全部源码,优点就是代码简介功能强大稳定可靠。


1: 简单好用。

2:代码统一。

3:最小程度影响现有系统。

4:各种.NET系统都可以集成,甚至php,java, asp 等都可以进行集成。


上面实例的相关代码参考如下:

/Files/jirigala/CRM.rar




本文转自 jirigala 51CTO博客,原文链接:http://blog.51cto.com/2347979/1196338,如需转载请自行联系原作者

相关文章
|
4月前
|
安全 Java 数据安全/隐私保护
在Java项目中集成单点登录(SSO)方案
在Java项目中集成单点登录(SSO)方案
|
30天前
|
存储 数据可视化 JavaScript
可视化集成API接口请求+变量绑定+源码输出
可视化集成API接口请求+变量绑定+源码输出
38 4
|
1月前
|
移动开发 数据可视化 小程序
可视化集成相当优秀ucharts图表组件
可视化集成相当优秀ucharts图表组件
45 3
|
3月前
|
缓存 负载均衡 Java
OpenFeign最核心组件LoadBalancerFeignClient详解(集成Ribbon负载均衡能力)
文章标题为“OpenFeign的Ribbon负载均衡详解”,是继OpenFeign十大可扩展组件讨论之后,深入探讨了Ribbon如何为OpenFeign提供负载均衡能力的详解。
OpenFeign最核心组件LoadBalancerFeignClient详解(集成Ribbon负载均衡能力)
|
3月前
|
NoSQL 关系型数据库 MySQL
SpringBoot 集成 SpringSecurity + MySQL + JWT 附源码,废话不多直接盘
SpringBoot 集成 SpringSecurity + MySQL + JWT 附源码,废话不多直接盘
138 2
|
4月前
|
编解码 数据挖掘 测试技术
对于大屏幕显示系统工程,这通常涉及到硬件(如显示器、投影仪、控制器等)和软件(如内容管理系统、控制软件等)的集成。
对于大屏幕显示系统工程,这通常涉及到硬件(如显示器、投影仪、控制器等)和软件(如内容管理系统、控制软件等)的集成。
|
5月前
|
人工智能 移动开发 IDE
安利几款与钉钉平台无缝集成打通账号认证的企业文档管理系统
钉钉是很多中小企业都爱用的产品,开通账号就能直接使用了,应用生态非常丰富,尤其是AI技术的应用,走在行业前列。但仍有很多企业对于全面拥抱SaaS服务充满了顾虑,尤其在内部资料的管理这块,即使钉钉在线文档已经提供了非常优秀的协作体验,不少客户仍更偏爱私有部署在局域网里面的企业文档管理系统。那么能将企业内部部署的文档管理系统集成到钉钉平台上面,和钉钉文档并行使用呢?市面上又有哪些企业文档管理系统软件支持与钉钉的集成呢?这也是很多企业客户的疑问。
安利几款与钉钉平台无缝集成打通账号认证的企业文档管理系统
|
4月前
|
传感器 Python
门禁管理系统工程是一个涉及硬件和软件集成的复杂系统,旨在控制人员的出入,并记录和管理相关数据。
门禁管理系统工程是一个涉及硬件和软件集成的复杂系统,旨在控制人员的出入,并记录和管理相关数据。
|
4月前
|
安全 Java 数据安全/隐私保护
在Java项目中集成单点登录(SSO)方案
在Java项目中集成单点登录(SSO)方案
|
4月前
|
安全 JavaScript
2. 集成 uni-ui 组件库
2. 集成 uni-ui 组件库
35 0
下一篇
无影云桌面