基于通用权限管理系统实现的单点登录
登陆页主要代码
1 using DotNet.Business; 2 using DotNet.Utilities; 3 using Newtonsoft.Json; 4 using ZTOTransferFees.Foundation; 5 using ZTOTransferFees.WebSite.WebPermission; 6 /// <summary> 7 /// 登录页面 8 /// 9 /// <author> 10 /// <name>SongBiao</name> 11 /// <date>2014.03.09</date> 12 /// </author> 13 /// </summary> 14 public partial class Login : BasePage 15 { 16 /// <summary> 17 /// 18 /// </summary> 19 protected string act = string.Empty; 20 /// <summary> 21 /// 站点 22 /// </summary> 23 protected string sitename = string.Empty; 24 /// <summary> 25 /// 用户名 26 /// </summary> 27 protected string username = string.Empty; 28 /// <summary> 29 /// 密码 30 /// </summary> 31 protected string password = string.Empty; 32 protected void Page_Load(object sender, EventArgs e) 33 { 34 act = string.IsNullOrWhiteSpace(Request["act"]) || string.Equals(Request["act"], "null", StringComparison.OrdinalIgnoreCase) ? "" : Request["act"].Trim(); 35 if (!string.IsNullOrWhiteSpace(act) && string.Equals("login", Request["act"].Trim(), StringComparison.OrdinalIgnoreCase)) 36 { 37 Response.ContentType = "application/json"; 38 sitename = string.IsNullOrWhiteSpace(Request["sitename"]) || string.Equals(Request["sitename"], "null", StringComparison.OrdinalIgnoreCase) ? "" : Request["sitename"].Trim(); 39 username = string.IsNullOrWhiteSpace(Request["username"]) || string.Equals(Request["username"], "null", StringComparison.OrdinalIgnoreCase) ? "" : Request["username"].Trim(); 40 password = string.IsNullOrWhiteSpace(Request["password"]) || string.Equals(Request["password"], "null", StringComparison.OrdinalIgnoreCase) ? "" : Request["password"].Trim(); 41 LoginResult loginResult = new LoginResult(); 42 BaseUserInfo userInfo = null; 43 JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer(); 44 if (!string.IsNullOrWhiteSpace(sitename) && !string.IsNullOrWhiteSpace(username) && !string.IsNullOrWhiteSpace(password)) 45 { 46 //webservice 方式访问 47 PermissionServiceSoapClient webPermission = new PermissionServiceSoapClient(); 48 string jsonData = webPermission.LogOnByCompany(sitename, username, password); 49 dynamic json = JsonConvert.DeserializeObject(jsonData); 50 string statusCode=string.Empty; 51 string statusMessage = string.Empty; 52 string userData = string.Empty; 53 statusCode = (string)((dynamic)json)["StatusCode"]; 54 statusMessage = (string)((dynamic)json)["StatusMessage"]; 55 if (string.Equals("OK", statusCode, StringComparison.OrdinalIgnoreCase)) 56 { 57 userData = json["UserInfo"].ToString(); 58 userInfo = javaScriptSerializer.Deserialize<BaseUserInfo>(userData); 59 FormsAuthentication.SetAuthCookie(userInfo.UserName, true, FormsAuthentication.FormsCookiePath); 60 FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(1, userInfo.UserName, DateTime.Now, DateTime.Now.AddMinutes(20), false, userData); 61 FormsIdentity identity = new FormsIdentity(authTicket); 62 ManageCookies.AddCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(authTicket)); 63 loginResult.Status = statusCode; 64 loginResult.Message = statusMessage; 65 } 66 } 67 string result= javaScriptSerializer.Serialize(loginResult); 68 Response.Write(result); 69 Response.End(); 70 } 71 72 } 73 /// <summary> 74 /// 登录结果 75 /// </summary> 76 class LoginResult 77 { 78 public string Status 79 { 80 set; 81 get; 82 } 83 public string Message 84 { 85 set; 86 get; 87 } 88 } 89 }
登录验证基类页主要代码
1 using System.Web.Script.Serialization; 2 using DotNet.Utilities; 3 /// <summary> 4 /// 权限基类页 5 /// 1、单点登录信息 登陆后保存用户信息 FormsAuthenticationTicket 6 /// 2、所有需要登录或炎症权限的均集成此类 7 /// 8 /// 9 /// <author> 10 /// <name>SongBiao</name> 11 /// <date>2014.03.09</date> 12 /// </author> 13 /// </summary> 14 public class AuthBasePage : BasePage 15 { 16 protected BaseUserInfo userInfo = new BaseUserInfo(); 17 protected string userData = string.Empty; 18 protected override void OnInit(EventArgs e) 19 { 20 //判断是否得到身份认证 21 if (!HttpContext.Current.User.Identity.IsAuthenticated) 22 { 23 Response.Redirect(FormsAuthentication.LoginUrl); 24 } 25 HttpCookie authCookie = Context.Request.Cookies[FormsAuthentication.FormsCookieName]; 26 FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value); 27 userData = authTicket.UserData; 28 JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer(); 29 userInfo=javaScriptSerializer.Deserialize<BaseUserInfo>(userData); base.OnInit(e);30 } 31 }
安全退出主要实现代码:需要实现本地退出时,主站也一起退出
public partial class Logout : AuthBasePage{protected void Page_Load(object sender, EventArgs e){try{//本地站点先退出 这样在主站退出有异常时可保证本地安全退出FormsAuthentication.SignOut();//ManageCookies.RemoveCookie(FormsAuthentication.FormsCookieName);ManageCookies.SetCookie(FormsAuthentication.FormsCookieName, DateTime.Now.AddDays(-1));//主站退出DotNet.Business.Utilities.Logout(userInfo, false);}catch (Exception ex){LogHelper.WriteErrorLog("安全退出Logout出现异常", ex);}finally{//返回到登录页面Response.Redirect(FormsAuthentication.LoginUrl);}}}
注意 在Global.aspx中需要设置配置
protected void Application_Start(object sender, EventArgs e){// 读取配置文件BaseConfiguration.GetSetting();}
上面using DotNet.Business;using DotNet.Utilities;是引用吉日嘎拉先生通用权限管理系统的组件。
转载于:https://www.cnblogs.com/hnsongbiao/p/3595214.html
基于通用权限管理系统实现的单点登录相关推荐
- 基于云端的通用权限管理系统,SAAS服务,基于SAAS的权限管理,基于SAAS的单点登录SSO,企业单点登录,企业系统监控,企业授权认证中心...
基于云端的通用权限管理系统 SAAS服务 基于SAAS的权限管理 基于SAAS的单点登录SSO 基于.Net的SSO,单点登录系统,提供SAAS服务 基于Extjs 4.2 的企业信息管理系统 基于E ...
- 通用权限管理系统组件 中集成多个子系统的单点登录(网站入口方式)附源码
通用权限管理系统组件 (GPM - General Permissions Manager) 中集成多个子系统的单点登录(网站入口方式)附源码 上文中实现了直接连接数据库的方式,通过配置文件,自定义的 ...
- 使用 Shiro 设计基于用户、角色、权限的通用权限管理系统
一.前言 在大型的信息管理系统中,经常涉及到权限管理系统 下面来个 demo,很多复杂的系统的设计都来自它 代码已经放到github上了,地址:https://github.com/larger5/s ...
- 通用权限管理系统组件 (GPM - General Permissions Manager) 中后一个登录的把前一个登录的踢掉功能的实现...
最近客户有需要,同一个帐户可以重复登录系统,但是后登录的账户需要把前面已经登录的账户踢掉,例如客户把电脑打开在别的电脑上然后换一个房间,或者换个办公楼想登录时就会遇到很多麻烦,遇到郁闷的情况就是死活无 ...
- 通用权限管理系统组件 (GPM - General Permissions Manager) 中集成多系统的统一登录(数据库源码级)附源码...
眼前有20万行以上的代码时很多人都会眼花缭乱,不知道从哪里开始下手了,甚至不会去研究几下就直接放弃了.其实大多时候没有想象的那么复杂,代码里一大部分都是有重复的,有本质上差别的部分还是很少的. 春节期 ...
- 通用基于角色权限管理系统-李杰-专题视频课程
通用基于角色权限管理系统-532人已学习 课程介绍 使用Django实现基于角色的权限访问控制(Role-Based Access Control)组件,其中涉及Django中间件.S ...
- 基于MVC4+EF5+EasyUI技术实现通用权限管理系统(EpPlus、HignCharts、Reportviewer报表)...
基于MVC4+EF5+EasyUI技术实现通用权限管理系统(EpPlus.HignCharts.Reportviewer报表) 适合人群:高级 课时数量:150课时 用到技术:MVC.EF.T4.Lo ...
- 通用权限管理系统组件 给信息管理系统加一个初始化的功能,调用存储过程
系统初始化的运行效果如下: 参数表是为了防止反复被初始化的,防止关键数据丢失. 其实很多人都提过希望有系统初始化的功能,最近稍微空一些,就给系统增加了一个初始化的功能,给大家参考一下. 首先写了一个存 ...
- 【商业版】C# ASP.NET 通用权限管理系统组件源码中的数据库访问组件可以全面支持Access单机数据库了...
可能在5年前还用过Access单机数据库但是后来很少用了,可能平时接触的都是大型管理类系统的开发工作大部分是Oracle.SQLServer数据库上做开发的,很少做一些小网站或者单机版本的东西,所以跟 ...
最新文章
- 学以致用三十五-----像素的困惑
- mybatis中传集合时 报异常 invalid comparison: java.util.Arrays$ArrayList and java.lang.String
- 一个棒棒糖引发的。。。
- oracle中通过游标实现查询
- lin-cms-dotnetcore功能模块的设计
- Java中WeakReference,SoftReference,PhantomReference和Strong Reference之间的区别
- 一般php的入口在哪,PHP单入口是否是必须的
- 20151217jqueryUI--自动补全工具
- 计网学习第一章:概述
- Arrays数组的常用方法
- 《淘宝网开店 拍摄 修图 设计 装修 实战150招》一一1.15 如何掌握拍摄方向
- 5. CSS 类选择器
- 人机交互-8-交互式系统设计
- 计算机表格出现value,excel表格出现#value解决方法
- WorkBook的SaveAs方法
- 【面试】被问“怎么进行接口测试”的知识点大全
- QQ号转换成16进制登陆
- HTML 自定义实现emoji
- CDN服务器是什么意思?CDN服务器搭建部署
- win10局域网中只能发现部分计算机,Windows10系统局域网中共享计算机找不到怎么办...
热门文章
- C#判断文件及文件夹是否存在并创建
- “云计算”三部曲之二:与“云”共舞——再谈云计算
- springcloud 之 bus 消息总线
- hdu 3622 Bomb Game【二分+2-SAT+tarjan】
- dubbo入门学习笔记之入门demo(基于普通maven项目)
- Error: Cannot find module 'babel-runtime/regenerator'
- 本地与世界的区别-学习笔记(一)
- 新手谈谈网站交互设计
- RESTful Android
- .NET3.5中的高性能 Socket API