目的:
1.单点登录,是一个用得很多,也是大家比较常见的登录方式了。我在这里写这篇文章的目的,是因为我的这个单点登录里,用了简单的设计模式。供大家参考。
2.这篇文章的附件代码,是完整的单点登录代码。您可以直接下载,嵌入您的系统即可直接使用。这是基于前些文章,部分网友提出的要提供代码下载。所以,我采纳了这个建议,非常感谢各位朋友。
配置:
在web.config中,需要在<system.web>节点中,添加如下配置:
<authentication mode="Forms">
<forms loginUrl="http://user.ccnf.com/login.aspx" timeout="2880" name=".CCNFAUTH" domain=".ccnf.com" defaultUrl="http://www.ccnf.com/" enableCrossAppRedirects="true" />
</authentication>
<machineKey validationKey="ED757E9190083A50853834A0508738AC58A89661" decryptionKey="B8262DEBC6D1D33F1932AC3EE9C4325E6008A928077B73E6" validation="SHA1" />
其中:machineKey的生成,网上有代码,请自行去google或baidu。关于authentication mode="Forms"的验证方式,请查阅msdn。
在Global.asax全局文件中,加入如下代码:
/// <summary>
/// 在验证完成后发生
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
/// <author>马志远(Marc)</author>
void Application_AuthenticateRequest(Object sender, EventArgs e)
{
HttpApplication app = (HttpApplication)sender;
HttpContext context = app.Context;
if (context.User != null)
{
if (context.Request.IsAuthenticated == true)
{
FormsIdentity identity = (FormsIdentity)context.User.Identity;
FormsAuthenticationTicket ticket = identity.Ticket;
string userData = ticket.UserData;
string[] roles = userData.Split(',');
context.User = new System.Security.Principal.GenericPrincipal(identity, roles);
}
}
}
/// <summary>
/// 发送身份请求时触发
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
/// <author>马志远(Marc)</author>
protected void Application_PostAuthenticateRequest(object sender, EventArgs e)
{
HttpContext ctx = ((HttpApplication)sender).Context;
HttpRequest req = ctx.Request;
HttpResponse resp = ctx.Response;
if (!UrlAuthorizationModule.CheckUrlAccessForPrincipal(req.AppRelativeCurrentExecutionFilePath, ctx.User, req.RequestType))
{
HttpContext.Current.Response.Redirect(String.Format("{0}?ReturnUrl={1}", FormsAuthentication.LoginUrl, req.Url.AbsoluteUri));
}
}
文件目录结构:
用法:
1.登录时调用的方法在Passport.cs文件中。调用的代码如下:
CCNF.Tool.Authentication.Passport.GetInstance().SetCookie(user.PersonId);
通过上面的代码调用,那么用户即可以登录成功了。
2.登录成功后,要取得用户的cookie数据,比如用户名、昵称等。这些方法写在了User.cs中。
调用代码为:
CCNF.Tool.Authentication.User.GetInstance().AdministratorId等。
3.退出系统的代码在SignOut.cs的代码中。
CCNF.Tool.Authentication.SignOut.Logout(returnurl);
使用上述代码,即可退出系统。
知识点:
其中Passport.cs文件用到了单例模式。单例模式代码如下:
/// <summary>
/// 登录验证
/// </summary>
/// <creator>马志远(Marc)</creator>
public sealed class Passport : AuthenticationAbstract
{
private static readonly Passport instance = new Passport();
/// <summary>
/// 构造函数
/// </summary>
/// <author>马志远(Marc)</author>
private Passport()
{
}
static Passport() { }
public static Passport GetInstance()
{
return instance;
}
代码附件下载:
本代码为全部代码,直接下载嵌入项目即可使用。
分享到:
相关推荐
Portal是基于Web的,以“应用整合”和“消除信息孤岛”为最终目的,提供单点登录、内容聚合、个性化门户定制等功能的综合信息系统。 完整的Portal通常由Portal服务器、Portlet容器、Portlet构成。 Portal服务器是...
java单点登录源码 介绍 Spring Cloud Function 是一个具有以下高级目标的项目: 通过功能促进业务逻辑的实现。 将业务逻辑的开发生命周期与任何特定的运行时目标分离,以便相同的代码可以作为 Web 端点、流处理器或...
# 高校教材管理系统 ## 项目介绍 ... ## 项目主要功能 * 教材信息管理。 * 教材库存管理,包括入库、出库、分发领取记录...* 使用了jwt进行前后端分离的权限管理和单点登录功能。 * 运行简单,功能通俗易懂,新手易入手。
与您的WordPress安装集成的GlotPress的完整副本,包括单点登录,全部都在一个插件中。 贡献者:GregRoss 插件URI: : GitHub插件URI: : 作者URI: : 标签:glotpress管理员至少需要:3.9 经过测试:4.3稳定标签...
区别于功能受限的其它版本,本人已测试,近乎完美。申明:此版本为windows 版PC端完整版,管理中心版本的一般用不上,而且文件太大。...· 单点登录选项 · 证书配置信息项 · DAM配置项 · FAQ选项
摩拜单车开锁功能测试用例
对已访问过的网址会本地自动记录,可以在线收藏自己爱好的网址,分类收藏,排序收藏等一系列完整的网络收藏夹功能。 5、模板标签化 程序与模板分离! 前台模版与后台程序完全分离,简单实用的标签调用,可以自己独立...
项目拥有完整源码,基础ssh项目,仅供学习使用
功能: (1) 登录注册模块:登录功能模块的设计面向全体...用户管理模块通过管理员管理用户信息,此模块中我们可以给用户的权限发生变化,同样,我们可以查看到用户的测评报告等功能点。 所需开发环境: 开发语言:Java
对已访问过的网址会本地自动记录,可以在线收藏自己爱好的网址,分类收藏,排序收藏等一系列完整的网络收藏夹功能。 5、模板标签化 程序与模板分离! 前台模版与后台程序完全分离,简单实用的标签调用,可以自己独立...
用户管理模块通过管理员管理用户信息,此模块中我们可以给用户的权限发生变化,同样,我们可以查看到用户的测评报告等功能点。 所需开发环境: 开发语言:Java 框架:ssm JDK版本:JDK1.8 服务器:tomcat7+ 数据库...
通用模块Core 核心功能模块,包括缓存管理,配置...Account:用户认证,可自己扩张到SSO单点登录 Account: 安全验证码实现 Account: 轻量级权限系统 OA:提供OA里人员,部门管理及分配的场景实例 CRM:客户关系管理系统
贝餐饮连锁版主要基于目前比较流行小程序生态下的自助点单系统,一款非常不错的餐饮外卖小程序。通过云贝餐饮连锁版系统,让中小型餐饮商家为用户提供了便捷外卖、堂食等服务;支持优惠券、满减、首单立减、老带新...
第一阶段:会实现电商系统的大部分功能,包括:用户管理,订单管理,商品管理,支付功能,后台管理系统,单点登录,购物车,搜索功能,个人中心等等 第二阶段:进一步完善系统,深入讲解和优化系统,包括:系统性能...
单点登录(SSO):用户在登录一个应用程序后,可以通过JWT令牌在其他应用程序中进行身份验证,实现单点登录的效果。 在.NET Core中,可以使用Microsoft.IdentityModel.Tokens库来处理JWT。该库提供了一些类和方法...
单点登录系统:为多个系统之间提供用户登录凭证以及查询登录用户的信息。 本系统主要采用SpringBoot框架,采用Java作为开发语言。在原有的基础上再加入对数据库MySq1的使用,以及加入可视化界面,使得程序内容更加...
全新界面简洁美观,功能强大完整,完美运营,持续更新中! 全开源系统,免授权无后门,资金安全有保障,无后顾之优! 更新日志: Ⅰ、新增利息宝功能,余额转入理财 Ⅱ、优化抢单体验,显示随机倒计时和提示内容...
主要特点 提问和回答(du!) ... 完整的用户管理,包括基于积分的信誉管理。 创建专家,编辑,主持人和管理员。... 快速集成的搜索引擎,并在询问时检查类似问题。... 对其他站点的自定义单点登录支持。 PHP / My
微信小程序-仿照美团、大众点评做的一个点餐的小程序,内容包含登录、页面跳转、楼梯效果、点餐动画、订桌、订餐、城市定位与天气定位(使用baiduapi)、微信支付,评论等功能