统一身份认证子系统界面设计与实现
目 录
一 引言 …………………………………………………………………1
二 需求分析……………………………………………………………..2
三 总体设计……………………………………………………………..2
四 用户界面设计………………………………………………………..4
五 具体实现……………………………………………………………..9
六 小结与致谢………………………………………………………….10
主要参考文献…………………………………………………………...11
附录 ……….…………………………………………………………..11
统一身份认证子系统界面设计与实现
周玲玲
西南师范大学计算机与信息科学学院 重庆 400715
摘要:统一身份认证子系统(UIA子系统)统一管理用户和校园内各个分管理系统(成员站点)。该论文主要阐述了该子系统的需求分析和总体设计。具体介绍了统一身份认证子系统中用户服务,成员站点服务,UIA子系统管理各个页面的功能和设计实现,并对页面间的跳转关系进行了详细的描述。阐述了统一登录窗体的设计思想和实现方案。
关键词:用户 用户站点 用户角色 统一登录窗体 登录按钮 退出按钮
Abstract :Unique Identity Authentication system (UIA ) manage user and campus each in charge of speaking to the system (member site ) in unison. This thesis has explained mainly that the demand for this subsystem and overall design. Unifying the user service in the authentication subsystem of the identity in concrete introduction, member's website serves, UIA system management each function and design of page realize, and it goes on detailed description to transfer the registration of Party membership, etc. from one unit to another to jump page. Have explained the design philosophy of unifying body of log-in window and realized the scheme.
Key word: user member's website user role Unify the body of log-in window Log-in presses the button Withdraw from the button
一、引言
对于校园内部的各个应用系统,用户使用时必须在每个系统中都注册,登录,比较麻烦,同时也容易造成混乱,更带来数据资源的重复存储。因此需要一个专门的系统对用户进行统一管理,即用户只需要注册登录一次就可以使用各不同应用系统。当然对于各个不同的应用系统,为了用户的使用方便,也对其进行一个逻辑上的统一管理。因此开发UIA(统一身份认证)子系统是很有必要的。当应用系统注册到在UIA后,我们称之为成员站点。
对用户的统一管理,一方面用在访问各个成员站点时无需多次注册登录,既给用户的使用带来方便,也为成员站点节约资源,避免各个成员站点分散管理统一用户带来的数据冗余。另一方面也给新的成员站点(新的应用系统)的开发提供方便。
对成员站点进行统一管理,一方面给用户的操作带来方便,即用户登录UIA子系统后就可以直接通过链接对各成员站点进行访问。另一方面对于成员站点只需要在该系统中注册时给出不同用户的权限类型,便可对各类用户进行权限控制,由该系统完成对用户的权限分配。因此开发UIA子系统(统一身份认证子系统),由小组讨论完成需求分析和总体设计(模块划分)中部分工作,我主要负责用户界面设计和具体实现.
二 、需求分析
(一)系统功能要求
UIA子系统要实现两大功能,一是对用户和系统的身份认证,二是对用户与成员站点之间的权限控制。通过用户的身份和成员站点对用户的权限分配用户可在该系统中获得访问某成员站点的权限,通过系统的身份和用户对成员站点的权限控制,成员站点可在该系统中获得察看用户信息的权限。
(二)系统性能要求
UIA子系统将会管理海量的用户和成员站点信息,这对UIA子系统的性能要求很高,同时多网络的性能要求也很高,所以要求UIA子系统首先要有容量很大的存储设备,同时要求有较大的带宽,保证大量用户在访问时不会发生网络阻塞。
(三)运行环境要求
.net平台,SQLSERVER数据库,IIS服务器
统一身份认证子系统(UIA)主要有两大功能模块:身份认证模块和权限管理模块。
UIA还包括系统维护模块和使用帮助模块,系统维护模块主要功能是成员站点的管理和对系统数据的维护。
UIA还提供一套SDK,供各成员站点开发时使用。如用户访问某成员站点时,UIA提供返回用户权限的函数,供成员站点调用。
根据统一身份认证系统的功能和应用,设计的用户界面主要包括三个页面:用户服务,成员站点服务,UIA系统管理。页面关系图如下:
用户服务页面包括修改信息,获取帮助,申请注册,查看信息这四个子类别。该页面如下图所示:
用户可以选择页面中任何一个链接操作,如修改密码,操作成功后,就可以按“继续”按钮返回到用户服务页面。然后继续进行其它操作。
该类为新用户提供申请统一身份和申请成员站点的角色服务。下面具体介绍申请统一身份页面:
成员站点服务页面包括修改我的站点信息,管理站点中用户的信息,申请成为新的成员站点,查看系统USID等四个链接。该页面显示如下:
点击“修改我的站点信息”链接到changesite。asp页面,用户可以修改其信息,如果用户尚未登录,系统将自动跳到登录页面,待用户以站点管理员角色登录后,系统将返回到该页面,用户方能进行修改操作。
点击“ 管理站点中用户的信息”链接到rolmgraspx页面,站点管理员可以在该页面管理站点中的用户信息,如启用,禁用,删除该站点中的用户。
点击“申请成为新的成员站点”链接到sitereg.asp页面,用户在该页面中输入相关的正确的注册信息后,系统就返回注册成功信息。否则返回注册失败信息,用户可以重新申请。
点击“ 查看我的站点的USID”链接到viewusid.aspx页面,用户可以从该页面中获取站点的USID.
UIA系统管理主要管理UIA中的用户和成员站点,因此该页面就包括管理UIA中的用户, 管理UIA中的成员站点两个链接.UIA系统管理页面如下图:
用户可以点击“ 管理UIA中的用户”链接到管理UIA中的用户子页面(usermgr.aspx).管理员可以从这个页面获取任何一个该系统用户的信息,如用户名,UUID,编号等信息,管理用户是否被启用.
用户可以点击“ 管理UIA中的成员站点”链接到管理UIA中的成员站点子页面(sitemgr.aspx)。UIA的系统管理员可以从这个页面管理UIA中注册的成员站点。
自动登录功能选项:用户选择以后,就可以直接登录到其他子系统,而不需要再次输入用户名和密码,节约用户时间,增强用户的登录体验。
我使用的是公共计算机功能选项:用户选择该选项后,用户退出系统后,系统将不保留用户登录信息, 防止其他用户盗用该用户的用户名和密码,提高系统的安全性。
当用户成功登录后,登录按钮就自动变化为安全退出按钮。用户只须点击此按钮即可安全退出登录。
2.提供了HTML 和WEB两种服务器控件,增加了方法、事件驱动能力,实现HTML代码与程序的分离,便于修改和阅读。
3.采用了Code behind技术,使得界面设计与程序设计分开,便于代码的重复使用,利于程序调试和维护,提高了程序的安全性。
在网页设计部分,主要运用asp.net中提供的丰富的控件,根据系统规划和系统分析合理地布局;在程序设计部分,运用程序设计语言C#来实现对控件的控制和响应及部分控件与数据库中数据的绑定。
主要应用的控件有Button控件, HyperLink控件和CheckBox 控件等。
Text=“dispname” //Text表示在按钮上所显示的标题
CommandName=“command”// CommandName用来设置与Button控件相关联的命令名,该属性可以用来在编程中判断所点击的是哪个按钮,从而执行相应的操作
CauseValidation=“ture/false” //CauseValidation表示在单击Button控件是是否执行验证
HyperLink控件和CheckBox 控件其功能HTML语言中HyperLink功能类似,语法也非常类似,这里就不赘述。
通过小组各成员的共同努力,统一身份认证子系统基本成型,系统功能基本实现。此次毕业设计让我对软件开发的过程有了更加深入的了解,从中我不仅对.NET技术有了一定的了解,学会了C#,ASP.NET编程,而且能够编写简单的用户界面程序。这是我的收获之一,但更让我深深的感动的是,小组成员之间的团结协作,共同劳动,彼此学习,互相帮助共同朝着实现本系统的目标努力的精神,它让我学会了如何工作,如何与人协调。通过自身的努力,我虽然取得了一定成绩,但同时也发现了许多不足,知识的欠缺以及动手能力的缺乏。这次毕业设计给了我一个踏上工作岗位之前的弥补机会。总之,本次毕业设计让我有了一个更充分了解自己的机会,丰富了自己的工作经验。
由于个人能力有限,时间仓促,用户界面还存在许多不足之处,我将利用剩余时间继续完善界面设计及其功能,并希望各位老师不吝赐教!
这次毕业设计能够顺利完成离不开指导老师邹显春老师、卢心红老师对我的指导和帮助,闻晓等老师也在此过程中给予了极大的帮助,在此对他们表示衷心的感谢!同时我还要感谢小组所有成员对我的支持与帮助!谢谢!
参考文献:
[1]肖建.ASP.NET编程实例与技巧集粹.北京希望电子出版社,2003.23-60
[2]王惠刚,王挺. ASP.NET实用培训教程. 北京希望电子出版社,2003.29-60.101-128
[3] Wright .C#编程技术与技巧.机械工业出版社,2002.41-111.417-447
附录:
申请成员站点页面sitereg.aspx的部分代码:
using Model;
using BusinessFacade;
namespace WebUI
{
public class sitereg : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Label Label1;
protected System.Web.UI.WebControls.TextBox TextBox1;
protected System.Web.UI.WebControls.TextBox TextBox2;
protected System.Web.UI.WebControls.Label Label2;
protected System.Web.UI.WebControls.TextBox TextBox3;
protected System.Web.UI.WebControls.Label Label3;
protected System.Web.UI.WebControls.Button Button1;
protected System.Web.UI.WebControls.ListBox ListBox1;
protected System.Web.UI.WebControls.Label Label4;
protected System.Web.UI.WebControls.Button Button2;
protected System.Web.UI.WebControls.DropDownList DropDownList1;
protected System.Web.UI.WebControls.Panel Panel1;
protected System.Web.UI.WebControls.Panel Panel2;
protected System.Web.UI.WebControls.Button Button3;
protected System.Web.UI.WebControls.Label Label5;
protected System.Web.UI.WebControls.Label Label7;
private SiteData site=null;
private void Page_Load(object sender, System.EventArgs e)
{
//确保将UserData类型的变量放在Session中,便于在页面刷新时保存此变量
if(this.Page.Session["SiteData"]==null)
this.Page.Session["SiteData"]=new SiteData();
//从Session中取出UserData
site=(SiteData)this.Page.Session["SiteData"];
// 在此处放置用户代码以初始化页面
{
//将站点角色绑定到ListBox1中
ListBox1.DataSource=site.Roles;
ListBox1.DataTextField="RoleName";
ListBox1.DataValueField="RoleID";
//将站点角色绑定到DropDownList1
DropDownList1.DataSource=site.Roles;
DropDownList1.DataTextField="RoleName";
DropDownList1.DataValueField="RoleID";
//执行绑定
DataBind();
}
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.DropDownList1.SelectedIndexChanged += new System.EventHandler(this.DropDownList1_SelectedIndexChanged);
this.Button2.Click += new System.EventHandler(this.Button2_Click);
this.Button3.Click += new System.EventHandler(this.Button3_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void Button1_Click(object sender, System.EventArgs e)
{
//向站点角色中添加新的角色
site.Roles.Add(new SiteData.Role(TextBox3.Text.Trim()));
TextBox3.Text="";
DataBind();
}
private void Button2_Click(object sender, System.EventArgs e)
{
site.SiteName=TextBox1.Text.Trim();
site.Url=TextBox2.Text.Trim();
//调用BusinessFacade层的服务完成站点注册
if(new SiteSystem().CreateSite(site) )
{
Panel2.Visible=false;
Panel1.Visible=true;
Label7.Text=site.USID.ToString();
}
}
private void DropDownList1_SelectedIndexChanged(object sender, System.EventArgs e)
{
//初始化站点的管理员角色
//DropDownList1.SelectedItem).CanAdminSite=true;
}
private void Button3_Click(object sender, System.EventArgs e)
{
//注册完成,重定向到siteservice.aspx页面
Response.Redirect("siteservice.aspx",true);
}
}
}
统一登录窗体控件Login.ascx的部分代码:
namespace WebUI.modules
{
public class Login : System.Web.UI.UserControl
{
protected System.Web.UI.WebControls.Panel Panel1;
protected System.Web.UI.WebControls.CheckBox CheckBox2;
protected System.Web.UI.WebControls.LinkButton LinkButton1;
protected System.Web.UI.WebControls.HyperLink HyperLink1;
protected System.Web.UI.WebControls.HyperLink HyperLink2;
protected System.Web.UI.WebControls.Label Label1;
protected System.Web.UI.WebControls.TextBox TextBox1;
protected System.Web.UI.WebControls.Label Label2;
protected System.Web.UI.WebControls.TextBox TextBox2;
protected System.Web.UI.WebControls.CheckBox CheckBox1;
protected System.Web.UI.WebControls.HyperLink HyperLink3;
protected System.Web.UI.WebControls.Button Button1;
private void Page_Load(object sender, System.EventArgs e)
{
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器
/// 修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void Button1_Click(object sender, System.EventArgs e)
{
//对参数进行规范化处理,去掉多余的空格
string nickname=TextBox1.Text.Trim();
string password=TextBox2.Text.Trim();
//调用UIA的WebService来完成用户身份验证
if(new BusinessFacade.UserSystem().CheckUser(nickname,password))
{
//将登录用户的信息加入到Session中
Model.UserData user=null;
user=new BusinessFacade.UserSystem().GetUser(nickname);
this.Session["User"]=user;
//创建身份验证票
FormsAuthenticationTicket Ticket = new FormsAuthenticationTicket (1,nickname,DateTime.Now, DateTime.Now.AddMinutes(30), false,"","/") ;
string HashTicket = FormsAuthentication.Encrypt (Ticket);
HttpCookie UserCookie = new HttpCookie(FormsAuthentication.FormsCookieName, HashTicket);
//添加到Cookies中
Response.Cookies.Add(UserCookie);
//跳转到适当的页面
if(this.Session["ReturnURL"]!=null)
Response.Redirect (this.Session["ReturnURL"].ToString(),true);
else Response.Redirect ("default.aspx",true);
}
}
}
}
页面安全控制控件CheckUser.ascx的部分代码:
namespace WebUI.modules
{
public class CheckUser : System.Web.UI.UserControl
{
private void Page_Load(object sender, System.EventArgs e)
{
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//没有任何显示页面的控件,需要安全认证的页面只要包含这个控件就可以了
//判断页面是否通过验证,若没有通过就跳转到login.aspx页面。
if(this.Page.User.Identity.IsAuthenticated==false)
Response.Redirect("login.aspx",true);
if(this.Page.Session["User"]==null)
Response.Redirect("login.aspx",true);
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器
/// 修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}
统一身份认证子系统界面设计与实现相关推荐
- 统一身份认证子系统详细设计与部分实现
目 录 一.摘要----------------------------1 二.引言----------------------------1 三. 需求分析 (1)系统的功能要求--------- ...
- 统一身份认证系统的简单看法
[事件背景]洋葱服务为什么没被成功接盘?_搜狐科技_搜狐网 https://www.sohu.com/a/124452755_354899 今天无意中看到这则新闻,发现人家洋葱认证服务已经停运1年多啦 ...
- Web服务统一身份认证协议设计与实现
单点登录(SSO)是目前比较流行的企业业务整合的解决方案之一,它的机制是在企业网络用户访问企业网站时作一次身份认证,随后就可以对所有被授权的网络资源进行无缝的访问,而不需要多次输入自己的认证信息.We ...
- 统一身份认证和授权--微服务架构
一.预备知识 本文讨论基于微服务架构下的身份认证和用户授权的技术方案,在阅读之前,最好先熟悉并理解以下几个知识点: 微服务架构相关概念:服务注册.服务发现.API 网关 身份认证和用户授权:SSO.C ...
- 服务架构:统一身份认证和授权技术解决方案
本文讨论的是基于微服务架构下的身份认证和用户授权的技术方案,从背景到微服务架构整套流程分解. 一.预备知识 本文讨论基于微服务架构下的身份认证和用户授权的技术方案,在阅读之前,最好先熟悉并理解以下几个 ...
- 【集合】统一身份认证(CAS)和OAuth2的工作流程
一.CAS协议 单点登录SSO(Single Sign ON),指在多个应用系统中,只需登录一次,即可在多个应用系统之间共享登录.如:在学校登录了OA系统,再打开科研.教务系统,都会实现自动登录. 统 ...
- 构建基于分布式SOA架构的统一身份认证体系
摘要:本文充分利用SOA架构松耦合的特点,通过规范统一网络接口实现业务系统整合,既提升系统安全性,又简化资源访问操作,具有重要的理论和现实意义. 统一身份认证旨在将分散在各个信息系统中的用户和权限资源 ...
- SCPPO(二十):系统统一身份认证的改造之路
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan [前言] 小编最近做的项目主要工作是维护,项目基本功能已经实现,平常时修改一些Bug或根据需求做 ...
- 什么是统一身份认证?
在用户名和密码诞生的初期,它被视为安全的盾牌.可在信息指数级增长的今天,一个用户拥有大量账户密码,记不住又难找回. 传统的用户名 / 口令的身份认证方式安全性低.无法满足对身份认证的高可靠性要求的需求 ...
最新文章
- asp.net mvc 与 asp.net结合(asp.net mvc 技巧)
- Python安装模块出错(ImportError: No module named setuptools)解决方法
- Kotlin 中的 run、let、with、apply、also、takeIf、takeUnless 语法糖使用和原理分析
- ai文件如何打开及常见文件的打开方式
- Samba服务器如何与Windows 95共享?
- poj 1330 LCA (倍增+离线Tarjan)
- java 字符数组与字符串_用于字符串和数组的5种简单有效的Java技术
- WSARecv() 函数使用解析
- java汉字转化accic_Java自主学习贴
- spring-boot启动失败 Unregistering JMX-exposed beans on shutdown
- K8S 部署rabbitmq集群
- python字符串split()函数
- 怎样通过计算机修改蓝牙音箱,蓝牙音箱怎么连接电脑(图文教程)
- 知乎热议:35岁,你要逃离北上广?
- windows上安装macos系统(超详细,可直接使用)
- java获得一年内的所有双休日
- word转PDF图片消失问题
- 倩女幽魂偃师技能攻略介绍:偃师技能怎么玩?
- android开发中遇到的技术难题,android开发过程中遇到的问题以及解决办法
- LattePanda 外壳 HOTe-LPA 铝合金外壳