通用权限管理系统组件 (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>
publicpartialclass _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();
//}
               }
           }
returnthis.userInfo;
       }
set
       {
this.userInfo = value;
       }
   }

protectedvoid Page_Load(object sender, EventArgs e)
   {

       // 这个是判断当前是否已经登录的函数
bool userIsLogOn = Utilities.UserIsLogOn();
this.btnLogOn.Enabled = !userIsLogOn;
this.btnLogOut1.Enabled = userIsLogOn;
this.btnLogOut2.Enabled = userIsLogOn;
   }

protectedvoid 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);
   }

protectedvoid 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);
   }

protectedvoid 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,如需转载请自行联系原作者

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

  1. 通用权限管理系统组件中简易员工档案管理模块参考

    通用权限管理系统组件 (GPM - General Permissions Manager) 中简易员工档案管理模块参考 今天的努力决定未来的成败,其实这些年想想,都是靠那么执着的精神,把 通用权限管 ...

  2. C#.NET通用权限管理系统组件中数据集权限设置功能增加内部组织机构选项功能...

    若全部加载组织机构数据,程序的界面会很缓慢,而且未必用到所有的组织机构,通常是用公司的内部组织机构为主,改进后的效果图如下. 转载于:https://blog.51cto.com/2347979/12 ...

  3. 通用权限管理系统组件 给信息管理系统加一个初始化的功能,调用存储过程

    系统初始化的运行效果如下: 参数表是为了防止反复被初始化的,防止关键数据丢失. 其实很多人都提过希望有系统初始化的功能,最近稍微空一些,就给系统增加了一个初始化的功能,给大家参考一下. 首先写了一个存 ...

  4. 通用权限管理系统组件 (GPM - General Permissions Manager) 给信息管理系统加一个初始化的功能,调用存储过程...

    系统初始化的运行效果如下: 参数表是为了防止反复被初始化的,防止关键数据丢失. 其实很多人都提过希望有系统初始化的功能,最近稍微空一些,就给系统增加了一个初始化的功能,给大家参考一下. 首先写了一个存 ...

  5. 【商业版】C# ASP.NET 通用权限管理系统组件源码中的数据库访问组件可以全面支持Access单机数据库了...

    可能在5年前还用过Access单机数据库但是后来很少用了,可能平时接触的都是大型管理类系统的开发工作大部分是Oracle.SQLServer数据库上做开发的,很少做一些小网站或者单机版本的东西,所以跟 ...

  6. 通用权限管理系统组件 (GPM - General Permissions Manager) 不改数据库、甚至不写代码就集成铜墙铁壁权限管理组件...

    为什么80%的码农都做不了架构师?>>>    越成熟的东西,越牛X的东西,越简单才对,简单才是硬道理,苹果的手机只有少数几个按键,苹果Ipad也很少的按钮,甚至连苹果的笔记本键盘都 ...

  7. 通用权限管理系统组件 (GPM - General Permissions Manager) 在跨国直销企业电子商务项目中的成功应用...

    我所在是一家跨国家直销公司,在亚太某国家电子商务项目中,2011年底系统全面应用了通用权限数据访问层类库及工具类库,支持了每月万级会员加入.千万级订单:同时,在我们的项目开发过程中,完全由外包工程师来 ...

  8. 通用权限管理系统组件 (GPM - General Permissions Manager) 中实现按部门组织机构设置权限...

    政府性质的单位里很少有人员流动,一般对系统的权限要求都是相对固定一些,所以有时候会有对系统按所在部门进行配置的需求,而且很有说服力,我们通用权限管理系统组件里也同样可以权限按所在部门设置.可以灵活满足 ...

  9. 通用权限管理系统组件 (GPM - General Permissions Manager)

    只开发一套业务管理系统,或者只维护一套业务管理系统是相对简单的事情,但是你要同时给多个客户开发多套系统,或者同时维护多个公司提供的多套系统时烦恼就来了,我们通用权限管理系统里有比较好的实现方式,有可以 ...

最新文章

  1. LeetCode.3-最长无重复字符子串(Longest Substring Without Repeating Characters)
  2. System.Security.Cryptography.CryptographicException: 用户的配置文件是临时配置文件 解决方案...
  3. mysql切换用户命令_linux基础04:linux用户相关的命令有哪些?怎样切换用户?
  4. 信息收集 ——情报分析
  5. css flex 小记
  6. 生产环境的分布式任务调度框架如何选择?quartz、xxl-job、Elastic-Job、Saturn
  7. HDU6268 Master of Subgraph
  8. 什么?都2021年了还不会ajax嘛,来这里让您快速学会Ajax
  9. 【网络协议】IP协议、ARP协议、RARP协议
  10. 程序应该怎样写比较规范
  11. MATLAB 学习笔记(5)MATLAB 数据的导入和导出
  12. Ragel——基于有限状态机用于产生源码的编译器
  13. 懒汉饿汉 php,单例模式——懒汉模式,饿汉模式
  14. ems与nms_求教OMC、EMS、NMS的区别和不同?
  15. 【122天】尚学堂高琪Java300集视频精华笔记(43-46)
  16. 远程桌面服务器零售授权许可证,由于没有远程桌面授权服务器可以提供许可证...
  17. 【和ChatGPT对话】帮助新手批量提取图片文字信息到文件
  18. python 调用Google Translate API 翻译
  19. 求值:空间向量的法向量
  20. 昨天玩游戏的情绪总结

热门文章

  1. 元宵节来了,程序员用 Python 送你一盏 3D 花灯
  2. ISP PIPLINE (九_1) Denoise 之 space domain denoise
  3. 1390 游戏得分(贪心)
  4. pfsense软路由防火墙(安装过程、L2tp配置)
  5. 以太坊开发者工具的最新清单
  6. 微积分学习笔记四:空间向量基础
  7. Mysql 瓶颈优化
  8. py编程技巧-1.5-如何快速找到多个字典的公共键(key)
  9. Python join sorted sort map reduce 函数解析
  10. VS2010 win32项目windows窗体程序 向导生成代码解析