网络课程教学与管理平台中角色及权限的设计与实现
2010-09-22叶涛
叶 涛
(南方医科大学教育技术中心,广东 广州 510515)
·网络与远程教育·
网络课程教学与管理平台中角色及权限的设计与实现
叶 涛
(南方医科大学教育技术中心,广东 广州 510515)
角色的设计与实现是网络课程教学与管理平台开发中的关键部分,它包括角色的定义与描述,角色对系统资源的操作权限定义及角色之间的关系描述等。网络课程平台的角色设计体现设计者对网络课程建设、管理及教学等过程及活动的理解。文章以具体的网络课程平台开发为例,阐述了其中角色及权限的设计与实现,对其他类似平台系统设计与开发具有一定的参考意义。
网络课程;平台开发;角色
用户是平台的具体使用者,角色用于表示用户的身份,是按平台具体业务划分的某类用户,如网络教学平台中的教师、学生等。在平台中的每个用户都归属于某类角色,并由此决定该用户在平台中所能具有的行为,以及对系统资源的操纵权限等。在计算机软件开发中,角色一般指平台中某类用户的标识,用于表示平台中具有相同安全权限的用户集合,是用户管理的单元[1]。角色的设计一般从系统管理、运作、应用的具体业务流程出发,将其中所涉及的用户对象归类到不同集合,明确具体集合中对象在系统中的行为及对系统资源所拥有的权限。角色、权限的设计是计算机软件设计的重要部分,平台中用户的管理、资源的使用权限、用户的行为、用户之间的关系都与之有关。通过角色与权限的设计,可以使平台体系结构清晰,组织合理,提高网络教学平台的管理效率和后期可维护性,使平台运行顺畅。
1 网络课程平台中的角色及权限
网络课程教学与管理平台 (下称“网络课程平台”)属于基于因特网的教学和管理平台范畴。
一个完整的支持基于因特网的教学和管理支撑平台至少应由 3个系统组成:网上课程开发系统、网上教学支持系统和网上教学管理系统[2]。据此,我们将网络课程平台理解为:是在计算机网络环境下,以课程为基本单位组织教学资源、实施教学活动与教务管理的系统。主要功能包括网络课程建设、网络课程教学与网络课程管理。网络课程平台的角色与权限设计首先从教学系统结构元素的主要活动出发,结合网络课程的建设与管理需求具体化。
教学系统的要素有 4个,即教师、学生、内容与环境[3],对这 4个要素在网络课程平台中的形式与关系理解如图 1所示:
图1 教学系统要素在网络课程教学与建设子系统中的形式与关系图
在图 1中,网络课程平台相当于环境要素,课程资源、公共资源、公告、作业、论坛等统归为内容。其中,论坛、作业等是网上教学活动展开的支撑环境,网络教学活动主体是教师与学生,教师主要教学活动有设计、加工、制作课程资源和公共资源、发布教学公告、布置作业、参与论坛等。学生主要学习活动有学习课程资源 (文本、视频等),围绕作业进行思考、参与论坛讨论、完成作业、内化知识等。由此可见,教师、学生是网络课程平台两大主要角色。
进一步从网络课程建设与教学过程的需求分析出发,将角色细化。我们使用访谈方法,了解学科教师、学校与院系教务人员对网络课程建设、教学、管理过程的理解与看法,确立网络课程建设与管理模式,确定网络课程平台角色及权限设计如图 2所示:
图 2 网络课程系统角色及权限设计框图
图 2中对网络课程平台的角色定义及权限描述如下:
●访客:系统中未注册的用户。具体权限有:浏览系统公告;浏览课程信息 (不能申请选课);查询、查看公共教学资源目录(不能点播教学资源)。
●学生:系统中注册用户默认的身份。具有的权限为:修改个人的信息;点播公共资源;提出选修课程;选修课程申请获通过后能够浏览、下载选修课程的教学资源,参与该课程的学习讨论。
●教师:教师除了具有学生的所有权限外,还具有的权限为:申请开设课程,若成功申请则成为该门课程的主持人;具有被其他课程的主持人邀请加入其他课程教师团队的资格。
●课程教师:被课程主持人加入课程中成为课程教师,他就具有这门课程的建设权限,包括课程资源目录的修改、课程资源的上传与编辑等。
●课程主持人:对应于实际教学中的某门课程的教学组长或主讲教师,系统设计为首先申请成功开设课程的教师为课程主持人,一门课程只有一名课程主持人。它具有课程内容建设的最高权限,除具有教师的课程内容建设权限外,他具有课程公告管理 (发布、删除、修改)权限;修改课程主页信息(课程简介、学分、性质等)权限;具有课程教师团队管理(增加、删除)的权限。课程主持人与课程教师角色在系统中不是全局的,局限于某门课程之内,一门课程的主持人在另一门课程中可能只是教师。
●管理员:系统可以具有多名管理员,一般为学院(系)方面的教务员帐户,对院(系)内的用户或课程进行管理。管理员具有以下权限:用户管理 (认证、删除、改变用户角色);网络课程管理 (认证、删除)、公共教学资源管理 (增加、删除、修改、统计)、系统公告管理(增加、删除、修改)。
●超级管理员:具有系统管理的最高权限,除具有管理员的权限外,他具有将系统中用户升级为管理员的权限,一般为教育技术中心负责网络教学的人员担任。超级管理员与各个院系的管理员组成系统的管理团队。
2 网络课程平台的实体设计与权限控制
图 2中各种角色对系统资源所具有的操作权限,实际上也描述系统的主要功能与业务流程。据此作进一步的系统设计,使系统的设计具体化,使用类程序语言表达系统的实体,是程序编码的蓝图。在这里主要使用面向对象设计思想与方法 (object oriented designed,OOD)。面向对象是目前软件分析、设计、编码的一种重要思想与方法,其主要思想是将软件系统中的实体资源用业务流程中现实对象进行模拟,如:教学过程中的教师,在网络课程教学系统中就有教师对象与之对应。面向对象方法主要好处是在系统分析时能以现实自然的方式进行分析与设计,在具体实现上以对象的形式将数据与行为封装在一起,使系统数据更安全、系统架构更为合理。
利用OOD对系统进行分析设计,例如课程实体对象设计如下:
课程对象行为包括:申请创建课程、修改课程、删除课程、获取课程主持人、检查课程是否被通过、通过课程创建申请、获得该门课程所有教师等,如图3虚线内部分所示。课程对象封装了课程的属性,定义课程所具有的行为,这些行为对外提供操作接口,系统中不同的角色根据权限定义只能获得相应的对象接口,超出其权限的接口被屏蔽掉,如图 3虚线外部分所示:
同样地,系统其他对象具有的行为设计如下:
●公共教学资源:包括点播、查询、查看描述信息、修改描述信息、增加资源、删除资源等行为。
●课程目录树对象:包括初始化、增加节点、删除节点、修改节点、获取节点的资源等行为。
●新闻公告对象:包括浏览、发布、修改、删除等行为。
●用户对象:包括注册、确认、角色改变、初始化密码、删除、修改等行为。
●论坛帖子对象:包括发布、删除、修改等行为。
●题目对象:包括增加、删除、修改等行为。
●作业对象:包括发布、获取作业的题目、增加题目、删除题目等行为。
图 3 用户操作请求、角色判断与权限控制和课程对象接口关系图
通过对系统中实体对象的设计(对象的具体属性略去),归纳出对象的操作接口,通过在对象操作接口上加入角色判断与权限控制层,对用户的角色进行判断,根据不同的角色赋予对象不同的操作权限,从而达到根据用户角色进行权限控制的目的(如图 3所示)。
3 角色判断与权限赋予实现
网络课程平台的实现是基于M icrosoft的.NET Fram ework1.1框架,开发环境为V isual Studio.net2003,采用C#编码实现。
3.1 ASP.NET安全机制
3.1.1 用户验证 ASP.NET提供多种身份验证模式,包括基本身份验证、摘要身份验证、窗体身份验证、Passport身份验证和集成的W indow s身份验证[4]。这里主要讨论窗体身份验证,其机制如图 4所示:
图 4 ASP.NET Form s窗体安全机制模式图
图中的 Cookies是平台服务端储存到客户端的硬盘或内存少量数据集合,它可以记录用户的 ID、密码、浏览过的网页、停留的时间等信息。当用户再次访问平台时,平台通过读取 Cook ies,得知用户的相关信息,就可以做出相应的动作。例如:在页面显示用户信息,或者让用户不用输入 ID、密码就直接登录等。从本质上讲,它可以看作是用户的身份证。当用户提出访问系统的请求后,系统会判断请求是否附加了身份验证的 Cook ie,如果没有,则 ASP. NET会将请求重定向到登录页,该页的路径驻留在应用程序的配置文件W eb.config中。当用户在登录页上输入所需的凭据 (通常是用户名与密码)后,系统在事件处理程序中检查凭据以确认它们的真实性,如果凭据通过身份验证,则系统会向客户端发送附加包含用户名但包不含密码的凭据,作为 Cookie储存在客户端,作为该用户以后访问系统的凭据(如图 4虚线上半部分所示)。
3.1.2 用户角色判断 当客户端的访问通过身份验证后,表明客户端请求是平台的注册用户,但是什么角色的用户,该赋予哪些权限还需要作进一步的判断(图 4虚线下半部分)。ASP.NET提供 IPrincipal接口实现角色的判断,IPrincipal接口包含一个Identity属性和一个 IsInRo le方法。Identity属性用来封装用户的具体信息,需根据具体应用定义。IsInRo le方法带有一个字符串参数,参数将具体的角色名传入 IsInRo le方法中与当前用户的角色名进行比较,如果一致则返回“真”的布尔值,说明当前用户的角色与参数值的角色一致;反之返回“非”布尔值,说明当前用户的角色与参数值的角色不一致。IsInRo le方法也必须根据具体应用要求编程实现。
实现 IPrincipal接口的对象在.NET Framework中称之为 Principal对象(主体对象)。在 ASP.NET中基于角色的安全性是由 Principal对象实现。主体对象表示运行代码的安全性上下文,实现基于角色安全性的应用程序根据同主体对象的关联角色授予权限[5]。其角色判断机制如图 5所示:
在图 5中,根据具体应用需要定义 Principal对象,以实现 IPrincipal接口 (Identity属性和 IsInRole方法);将当前用户的信息实例化 Principal对象;实例化的 Principal对象 (含有具体用户信息)赋予 H ttp Context.User对象,H ttpContext.User对象位于 System. W eb命名空间,是ASP.NET系列封装上下文信息的类之一,ASP.NET通过这些类维护有关当前应用程序、每个用户会话、当前 HTTP请求、请求的W eb窗体页等信息。ASP.NET页框架包含一系列封装此上下文信息的类,使这些类的实例可以从代码访问的内部对象[6]。H ttpContex类提供对整个当前上下文(包括请求对象)的访问,其中包括当前用户信息U ser的访问,因此可以在需要对用户的角色进行判断时,使用代码访问 H ttpContext.U ser对象,由于其值为实例化的 Principal对象,则可以提取出当前用户的身份 (Identity属性),并判断其角色 (IsInRo le方法),再根据用户的角色赋予相应权限。
图 5 基于主体对象的角色判断示意图
3.2 网络课程平台中角色和权限控制的实现
网络课程平台体系设计与实现按照3层构架进行:
数据层:包括系统各种数据表及对数据操作的存储过程,还有使用ASP.NET数据控件写成的通用数据访问接口。
业务层:根据面向对象设计(OOD)而得到的系统实体模型,使用面向对象语言进行具体编程(OOP),实现系统的业务逻辑功能。
表现层:为用户呈现系统界面,通过界面调用业务层的接口。
这里主要论述用户身份验证、角色判断、权限赋予等部分。网络课程平台的角色与权限的实现依托上述ASP.NET安全机制,并根据网络课程平台的具体情况进行了扩展。
3.2.1 数据层中用户、角色、课程表定义及它们的实体关系 用户表 (user)记录用户 ID、用户登录名、用户实名、角色 ID、所属部门、联系电话、电子邮件等用户信息。角色表 (role)记录角色 ID和角色名称,角色名称有:超级管理员 (SuperA dm in)、管理员(A dm in)、注册用户 (RegU ser,默认为学生角色)、准用户 (PreU ser,已注册、待审核通过为注册用户)、教师(Teacher)。用户与角色通过角色 ID进行关联。课程表(course)记录课程的相关信息,如课程 ID、课程名、课程英文名、课程类型、课程简介等。
课程主持人与课程教师角色不是全局性的,而是与课程相关,例如:某教师在 A课程角色是课程主持人,而在 B课程则是教师等。因此,课程主持人与课程教师不宜在角色表中设置。课程主持人在课程中只有一位,可以将课程主持人设在课程表中,通过用户 ID与用户表关联。
需要明确的是角色表中教师的角色与某门课程中的教师不一样,如果一个用户的角色是教师,只是说明他具备教师资格(必要条件),但他是否是某门课程的教师,还要和课程发生关联。一门课程可以有多个教师,一位教师也可以在多门课程内任教。因此,教师与课程的关系是典型的多对多关系,使用用户_课程表 (user_course)来表示这种关系,用户_课程表记录用户登录名与课程 ID。用户、角色、课程关系如图 6所示:
图 6 用户、角色、课程关系示意图
从图 6的设计中,可以使用下面查询形式获取某用户作为主持人的课程 ID集合:
Select课程表.课程 ID FROM课程表W here(课程表.课程主持人 ID=@查询值)
查询用户作为课程教师的课程 ID集合稍为复杂一点,在确保用户的角色是“教师”的前提下,在用户_课程表中将该用户关联的课程 ID查询出来。3.2.2 业务层中用户对象的定义 业务层包含系统所有实体对象的编程实现,和身份验证与角色判断有关的主要是用户对象(M ISU ser)。它封装了用户对象的属性(对应于用户表字段),如用户 ID、用户登录名、用户实名、角色等,封装的行为包括创建用户、删除用户、获取用户详细信息、修改用户角色等。
3.2.3 Iden tity对象(标识对象)的实现 M y Identity对象实现 IIdentity接口,根据网络课程平台的需要, M y Identity类中扩充了原有的属性:增加 Ro le属性,以获得当前用户的角色;增加 Fu llNam e属性,以获得当前用户的实名;还增加 CourseM asterL ist和 Course TeacherList,两个属性分别返回两个数组:CourseM aster List[]和CourseTeacherL ist[],分别记录当前用户担任主持人的课程 ID和担任教师的课程 ID。例如: courseM asterList[]包含 3个数组元素 courseM asterL ist [0]值为12,courseM asterL ist[1]值为17,courseM asterList [2]值为 30,则表示此用户担任 3门课程的主持人,课程 ID分别为 12、17和 30,当用户访问某门课程时,根据此门课程的 ID是否存在于 cou rseM asterL ist []中就可以判断用户是否为课程主持人。
3.2.4 Pr inc ipa l对象(主体对象)的实现 主体对象M yPrincipal类以实现 IPrincipal接口,IPrincipal接口包括M y Identity属性及 IsInRole方法,M y Identity已在前面定义,IsInRo le方法实现当前用户角色的判断。
IsCourseM aster(int thisCourse ID)函数实现用户是否为课程主持人的判断:以某门课程的 ID作为参数,与 Context.User.courseMasterList属性比较,如果参数的课程 ID存在于 courseM asterL ist数组中,则说明该用户是这门课程的主持人,反之则不是。IsCourse Teacher(int thisCourse ID)实现用户是否为课程教师的判断,其逻辑判断与判断课程主持人的一样。
3.2.5 用户身份验证、Pr inc ipa l对象实例化及上下文关联 定义好M y Identity和M yPrincipal对象后,就可以进行用户身份验证、Principal对象实例化及上下文关联。这在 Global.asax.cs文件中的App lication_ AuthenticateRequest事件中实现,Global.asax.cs的App lication_AuthenticateRequest事件在每个请求时都会触发该事件,在这个事件中允许为请求建立定制的身份验证。用户的身份验证流程如图 4所示,具体依据上述定义的M ISUser、M y Identity、M yPrincipal对象功能而实施。
3.2.6 角色的判断与权限的赋予 在各个页面的Page_Load事件中检查 Context的 U ser的角色,以便根据U ser的角色显示相应的资源操作接口及界面。如果用户是管理员,则赋予管理员的权限;如果用户是课程主持人,则赋予课程主持人的权限。从而实现基于角色的权限控制。
4 应用效果
上述角色及权限设计已经完全实现并具体应用在我校网络课程平台上。经过近两年的使用,系统性能稳定,角色的设计与权限控制符合网络课程建设、管理及教学的需要,普遍反映良好。相对于同类型的平台,上述设计与实现方法具有以下优点:
①角色设计符合教学实践,适合网络教学需要:我校医学课程教学很多是大班教学,由多个教师组成一个团队,由教学组长负责组织教学研究。平台中课程主持人和教师角色正与之对应,系统管理员根据学科的需要给学科指定 1-2名管理员,管理员主要负责本学科课程的运行维护管理,负责审核本学科教师开设网络课程的申请,当教师申请开设的网络课程获得通过后,该名教师即获得这门网络课程的课程主持人角色,具有管理这门课程的最高权限,他可以组织课程的教学团队,将教师用户角色修改为该门课程的教师角色,这些教师具有该门课程的资源管理、组织、教师实施等权限,这些教师可能同时在几门网络课程内授课,有效地解决了课程与教师的多对多关系,使教师能有效地利用网络课程平台分别有效地备课、实施教学;
②提高用户与角色管理效率:用户的角色改变灵活方便,管理员只需在管理用户的界面中将其角色一栏改变,用户的权限就会发生改变。例如:在教学中,一些教授往往需要研究生助教,而研究生用户是属于学生角色,无法帮助教授进行备课,这时管理员只需将研究生用户的角色由学生暂时改为教师,研究生就具有备课与教学的权限,课程教学完成后,再将其角色由教师转回学生;
③平台健壮性强:角色与权限判断的实现是基于ASP.NET框架的 IIdentity接口及 IPrincipal接口,而ASP.NET是经过严格测试的开发与运行环境,因此平台的运行的稳定、流畅得到有效的保证;
④可扩展性强:由于实现角色与权限判断功能的代码是封装于 IIdentity及 IPrincipal接口的派生类中,而这些派生类在平台业务层中向外提供功能接口,因此在以后新开发的功能模块都可调用这些接口实现角色与权限的判断,由此集中统一了用户、角色与权限的管理;
⑤可维护性强:角色与权限判断的实现模块扩展了ASP.NET框架的 IIdentity接口及 IPrincipal接口,如对课程主持人和课程教师等非全局性角色的判断。随着后期平台发展的进一步需求,需修改角色与权限判断模块时,只需修改派生于 IIdentity及 IPrincipal接口的类代码,外层代码与其他模块不受影响;
⑥可移植性强:当开发类似的平台时,无须重新开发角色与权限判断的代码,只需将相应的类文件包含在开发项目中,一起编译后,就可以直接使用角色与权限判断的功能。
实践证明,角色与权限的设计与实现对于网络课程平台开发非常重要,是理解网络课程平台运作的关键,是系统设计的起点,通过对角色与权限的分析与设计,分解网络教学过程具体步骤,细化为实体对象的行为,从而构筑起整个平台的体系。具体的实现根据网络课程需求扩展了 ASP.NET框架的IIdentity接口及 IPrincipal接口,如对课程主持人和课程教师等非全局性角色的判断等,对类似的平台系统设计与开发具有一定的参考意义。
[1]Christian Nagel,B ill Evjen,Jay Glynn.C#高级编程 [M].4版.北京:清华大学出版社,2006
[2]何克抗,李文光.教育技术学 [M].北京:北京师范大学出版社,2002
[3]扈中平,李方,张俊洪.现代教育学[M].2版.北京:高等教育出版社,2005
[4]B ill Evjen,ScottHanselman,FarhanM uhammad,等.ASP.NET 2.0高级编程[M].4版.北京:清华大学出版社,2006
[5]M icrosoftCorporation,M icrosoftV isual Studio.net2003文档象[EB/OL].主体和标识对m s-help://MS.VSCC.2003/MS. MSDNQTR.2003FEB.2052/cpguide/htm l/cpconp rincipalidentity objects.htm.,2003/2009
[6]M icrosoft Corporation,M icrosoftV isual Studio.net2003文档象[EB/OL].W eb窗体应用程序中的页和应用程序上下文[EB/ OL].m s-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB. 2052/vbcon/htm l/vbconPageApp licationContext.htm,2003/2009
Design and rea liza tion of role and au thor iza tion in In ternet-based course in struction andm anagem en t p la tform
Ye Tao
(Cen ter of Educa tiona l Techno logy,Sou thern M ed ica lUniversity,Guangzhou 510515,China)
Ro le design and realization is the key to Internet-based course instruction and developm entofm anagem en t p latfo rm. It consists of ro le definition and descrip tion,i.e.,definition of system resource user’s identity authentication and descrip tion of relation between ro les. It em bodies the designer’s viewpointof construction,m anagem ent and instruction of Internet-based courses.The paper demonstrates the design and realization of ro le design and autho rization based on the p latform developm ent of a specific In ternet-based course. Itm ay serve as reference to the design and developm ent of o ther sim ilarp latform system s.
Internet-based course;p latfo rm developm ent;ro le
G434
A
:1004-5287(2010)01-0036-06
2009-09-07
叶涛 (1970-),男,广东人,副教授,硕士,主要研究方向:网络教学系统与资源的开发与应用。