Asp.Net Forums 角色系统(1)

对虚拟社区而言,帐户管理是系统安全不可或缺的部分,ASP.NET Forums也一样。

ASP.NET Forums采用以角色为中心的帐户管理模式。这种模式将系统的权限和用户分开,使用角色作为一个中间层,用户和角色的是多对多的关系,即,一个用户可以同时属于一个或多个角色,一个角色也可以同时包含一个或多个用户。用户访问某模块时,通过其所在的角色对该模块的使用权限来获得访问该模块的权限。这种分层的帐户管理模式可以实现有效的权限管理。

1.       系统设计

1.1    需求分析

帐户管理需要完成以下几个任务。

l          角色管理:添加、编辑或删除角色(即论坛中的用户自定义角色,版主,大版主,超级管理员等权限)。

l          用户管理:添加、编辑、删除或查看社区用户信息。

l          用户的登入登出:用户进入系统前,对用户输入的用户名和密码进行验证,并记录用户登录时间,用户退出系统时,清除相关cookies信息。

功能设计

l          角色管理

角色是一种用来禁止未被授权的用户进入或管理指定论坛模块的机制(权限)。用于将应用程序内具有相同权限的用户集合在一起

角色管理提供角色的添加、编辑和删除功能。

角色管理界面用表格来显示现有角色及其描述。除系统角色外,所显示的其他角色都可以被编辑或删除。在角色管理页面,还可以添加新的角色。

l          用户管理

用户管理实现用户信息的编辑、删除操作。

用户管理页面可以查看用户信息。可以选择一次查看所有用户信息或者按姓名首字母分页查看。

用户管理页面还可以对用户进行角色的添加、编辑和删除操作。

l          用户的登录登出

用户登录登出部分实现5大功能,分别是:用户登录、用户注册、修改基本信息、密码提示和用户登出。

a)        用户登录:实现用户进入系统的验证功能,并记录用户最近登录信息。

b)        用户注册:提供新用户注册功能。

c)        修改基本信息:登录进系统的用户可修改本人时区选择,语言选择,风格选择,邮件提醒等

d)        密码提示:对忘记密码的用户用Email方式提示用户密码。

e)       用户登出:用户登出系统并清除相关cookies

1.3    数据库设计

l          角色管理

根据系统的需求,为实现角色管理的功能,数据库中需要以下六张表。

a)         用户表(forums_Users):描述用户的基本信息,用户名,昵称,密码,密码加密格式等[用户的扩展信息是由表forums_Profile实现,在用户管理小节详解]

b)         用户角色关系表(forums_UserInRoles):连接角色表和用户表。

c)         角色表(forums_Roles):描述用户角色。

d)         版主信息表(forums_Moderators):描述用户可以管理哪个板块。

e)         审核日志表(forums_ModerationAudit):描述版主或管理员的操作日志。

f)          版主动作表(forums_ModerationAction):描述版主或管理员可操作动作及相关性描述。

六张表的关系如图1.1所示。

1.1  帐户管理数据库关系表

从关系图中可以看到,用户表(forums_Users)和角色表(forus_UserRoles)的多对多关系通过用户角色关系表(forums_UsersInRoles)来体现。而一个用户可以有多个分组或板块权限(用户在某个分组中具有权限则为大版主[独立角色],在某个分组的具体板块中具有权限则为版主)详细表现在(forums_Moderators)表中,而大版主或者版主的具体行为则有(forums_ModerationAction)表来标示。用户和具体版主或大版主行为描述的多对多关系通过表(forums_ModerationAudit)来体现。

1).  用户表(forums_Users

用户表的结构如表1.1所示:

1.1                             用户表

字段名

描述

类型

长度

是否可为空

是否主键

UserID

社区ID

int

4

UserName

角色名

nvarchar

64

NickName

角色昵称

nvarchar

64

Password

角色密码

nvarchar

64

PasswordFormat

密码格式化

smallint

2

Salt

varchar

24

PasswordQuestion

密码提示问题

nvarchar

256

PasswordAnswer

密码提示答案

nvarchar

256

Email

电子邮件

nvarchar

128

DateCreated

用户建立时间

datetime

8

LastLogin

最后一次登陆时间

datetime

8

LastActivity

最后一次活动时间

datetime

8

IPCreated

帐号建立的IP

nvarchar

30

IPLastActivity

最后一次活动IP

nvarchar

30

IPLastLogin

最后一次登陆IP

nvarchar

30

IPLocation

客户端IP

nvarchar

50

LastAction

最后一次活动描述

nvarchar

1024

UserAccountStatus

用户状态

smallint

2

IsAnonymous

是否匿名活动

bit

1

ForceLogin

强制登陆

bit

1

AppUserToken

(预留字段没用到)

varchar

128

Platform

操作系统

nvarchar

50

Browser

浏览器

nvarchar

50

PortalTheme

用户系统扩充

nvarchar

50

用户表用来存放用户的基本信息,示例数据如图1.2所示:

2.          用户角色关系表(forums_UserInRoles

用户角色关系表的结构如表1.2所示:

1.2                             用户角色关系表

字段名

描述

类型

长度

是否可为空

是否主键

UserID

用户ID

int

4

RoleID

角色ID

int

4

用户角色关系表用来存放用户和角色的关系ID,示例数据如图1.3所示:

3.          角色表(forums_Moderators

角色表的结构如表1.3所示:

1.3                             角色表

字段名

描述

类型

长度

是否可为空

是否主键

RoleID

角色ID

int

4

Name

角色名

nvarchar

256

Description

角色描述

nvarchar

512

角色表用来存放相关角色的详细信息,示例数据如图1.4所示:

4.          版主信息表(forums_Moderators

版主信息表的结构如表1.4所示:

1.4                             版主信息表

字段名

描述

类型

长度

是否可为空

是否主键

UserID

用户ID

int

4

ForumID

版块ID

int

4

DateCreated

建立时间

datetime

8

EmailNotification

邮件通知

bit

1

PostsModerated

 

int

4

版主信息表用来存放版主的基本信息,示例数据如图1.5所示:

5.          审核日志表(forums_ModerationAudit

审核日志表的结构如表1.5所示:

1.5                             审核日志表

字段名

描述

类型

长度

是否可为空

是否主键

ModerationAction

版主操作序列

int

4

PostID

帖子ID

int

4

UserID

用户ID

int

4

ForumID

板块ID

int

4

ModeratorID

版主ID

int

4

ModeratorOn

是否版主

datetime

8

Notes

审核注释

nvarchar

1024

版主审核表用来存放版主的审核信息,示例数据如图1.6所示:

6.          版主动作表(forums_ModerationAction

版主动作表的结构如表1.6所示:

1.6                             版主动作表

字段名

描述

类型

长度

是否可为空

是否主键

ModerationAction

版主操作序列

int

4

Description

操作描述

nvarchar

128

TotalActions

操作次数

int

4

版主动作表用来存放版主的操作日志,示例数据如图1.7所示:

l          用户管理

根据系统的需求,为实现角色管理的功能,数据库中需要以下十一张表。

a)         用户表(forums_Users):描述用户的用户名、用户密码等相关信息。

b)         用户与头像关系表(forums_UserAvatar):描述用户和用户头像的关系。

c)         用户头像表(forums_Images):描述用户头像信息。

d)         用户等级表(forums_Ranks):描述用户的等级。

e)         用户私人消息表(forums_PrivateMessages):描述存储用户的私人信息。

f)          用户发帖统计表(forums_statistics_User):描述用户登录后存储用户的发帖总数,在用户等出后清空。

g)         在线用户表(forums_UserOnline):描述用户是否在线。

h)         用户收藏主题表(forums_Favorites):描述用户的收藏的帖子。

i)           用户扩展信息表(forums_UserProfile):描述用户在论坛中的个人设置信息。

j)           匿名用户表(forums_AnonymousUsers):描述如果用户没有登陆而进入论坛,则存储匿名用户的信息。

k)         用户报告表(forums_Reports):描述用户向版主或管理员发布报告的表。

十一张表的关系如图1.8所示。

1.8  用户管理数据库关系表

 

1)         用户表(forums_User

上面已经介绍过(表1.1和图1.1),这里不再敖述。

2)         用户和头像关系表(forums_UserAvatar

用户和头像关系表的结构如表1.7所示:

1.7                             用户头像表

字段名

描述

类型

长度

是否可为空

是否主键

UserID

用户ID

int

4

ImageID

用户头像ID

int

4

用户和头像关系表用来存放用户和其头像之间的关系,示例数据如图1.9所示:

3)         用户头像表(forums_Ranks

用户头像表的结构如表1.8所示:

1.8                             用户头像表

字段名

描述

类型

长度

是否可为空

是否主键

ImageID

用户头像ID

int

4

Length

用户头像长度

int

4

ContentType

头像图片类型

nvarchar

64

Content

图像流

image

16

DateLastUpdated

最后一次更新时间

datetime

8

用户头像表用来存放用户头像的相关信息,示例数据如图1.10所示:

4)         用户等级表(forums_Ranks

用户等级表的结构如表1.9所示:

1.9                             用户等级表

字段名

描述

类型

长度

是否可为空

是否主键

RankID

用户等级ID

int

4

RankName

用户等级描述

nvarchar

30

PostingCountMin

最少发帖量(最小积分)

int

4

PostingConntMax

最多发帖量(最大积分)

int

4

RankIconUrl

等级图标地址

nvarchar

256

用户等级表存放有关于用户等级的相关信息,示例数据如图1.11所示

5)         用户私人消息表(forums_PrivateMessages

用户私人消息表的结构如表1.10所示:

1.10                             用户私人消息表

字段名

描述

类型

长度

是否可为空

是否主键

MessageID

用户私人消息ID

int

4

SenderUserID

发送信息用户ID

int

4

RecipientID

接受信息用户ID

int

4

Subject

私人信息标题

nvarchar

50

Content

私人信息内容

ntext

16

CreateTime

创建时间

datetime

8

IsSenderDelete

是否发送者删除

bit

1

IsRecipientDelete

是否接受者删除

bit

1

IsRead

是否读取

bit

1

IsReply

是否回复

bit

1

用户私人信息表存放有关于用户私人消息的相关数据,示例数据如图1.12所示

6)         用户发帖统计表(forums_statistics_User

用户发帖统计表的结构如表1.11所示:

1.11                             用户发帖统计表

字段名

描述

类型

长度

是否可为空

是否主键

UserID

用户ID

int

4

TotalPosts

用户发帖总数

int

4

用户发帖统计表存放有关于用户发帖总数,示例数据如图1.13所示

7)         在线用户列表(forums_UserOnline

在线用户列表的结构如表1.12所示:

1.12                             在线用户列表

字段名

描述

类型

长度

是否可为空

是否主键

UserID

用户ID

int

4

LastActivity

用户最后一次活动时间

datetime

8

LastAction

用户最后一次活动描述

nvarchar

1024

在线用户列表存放有关于用户发帖总数,示例数据如图1.14所示

8)         用户收藏主题表(forums_Favorites

用户收藏主题表的结构如表1.13所示:

1.13                             用户收藏主题表

字段名

描述

类型

长度

是否可为空

是否主键

UserID

用户ID

int

4

ThreadID

帖子主题ID

int

4

FavoriteDate

收藏时间

datetime

8

用户收藏主题表存放有关于用户收藏经典帖子的具体信息,示例数据如图1.15所示

9)         用户扩展信息表(forums_UserProfile

用户扩展信息表的结构如表1.14所示:

1.14                             用户具体设置表

字段名

描述

类型

长度

是否可为空

是否主键

UserID

用户ID

int

4

TimeZone

帖子主题ID

float

8

TotalPosts

发帖总数

int

4

TotalValuedPosts

总精华数

int

4

Integral

用户积分

int

4

PostSortOrder

帖子排序方式

int

4

StringNameValues

保存用户扩展属性

varbinary

7500

PostRank

发帖等级

binary

1

IsAvatarApproved

是否允许头像审核后才起作用

smallint

2

ModerationLevel

新用户管理级别

smallint

2

EnableThreadTracking

是否跟踪主题

smallint

2

EnableDisplayUnreadThreadsOnly

是否主题不允许回复

smallint

2

EnableAvatar

是否启用头像

smallint

2

EnableDisplayInMemberList

是否启用在线成员列表

smallint

2

EnablePrivateMessages

是否允许私人消息

smallint

2

EnableOnlineStatus

是否显示在线状态

smallint

2

EnableHtmlEmail

是否以Html格式发送邮件

smallint

2

用户扩展信息表存放关于用户个性设置的具体信息,示例数据如图1.16所示

10)      匿名用户表(forums_AnonymousUsers

匿名用户表的结构如表1.15所示:

1.15                             匿名用户表

字段名

描述

类型

长度

是否可为空

是否主键

UserID

用户ID

int

4

LastLogin

最后一次登陆时间

datetime

8

IPAddress

登陆IP地址

nvarchar

32

IPLocation

IP真实地理位置

nvarchar

50

LastAction

最后活动状态描述

nvarchar

1024

Platform

用户系统操作平台

nvarchar

50

Browser

浏览器

nvarchar

50

匿名用户表存放关于用户匿名上线后的具体信息,示例数据如图1.17所示

11)      用户报告表(forums_Reports

用户报告表的结构如表1.16所示:

1.16                             用户报告表

字段名

描述

类型

长度

是否可为空

是否主键

ReportID

用户报告ID

int

4

ReportName

报告名称

varchar

20

Active

 

bit

1

ReportCommand

 

varchar

6500

ReportScript

 

text

16

用户报告表存放关于用户想管理员发送报告的内容等,示例数据如图1.18所示

l          用户的登录登出

用户登入登出用到的是用户表(forums_User)介绍过(表1.1和图1.1),这里不再敖述。

匿名用户表(forums_AnonymousUsers)介绍过(表1.1和图1.1),这里不再敖述。

 

2.2  用户注册、密码取回、登入和登出

当一个用户执行用户注册过程的时候,系统会自动把这个用户加入到注册用户行列中。该用户填写的用户名将会是用户在论坛的唯一识别。

对于的任何投诉、问题、找回密码以及以后的一切新增功能和增值服务,均采用这个用户名处理,注册时填写的信息以保证论坛管理员能及时与用户联系即可。

当用户使用注册时填写的唯一ID和密码的时候,即可以参与论坛的讨论以及享受论坛提供的对应角色的服务,即用户登录。登出则为注销您当前的ID,一般当关闭浏览器的时候,如果没有选择记录cookie,用户会自动登出。

2.1    实现效果UI

当进入论坛主页的时候,就会看到明显的登录注册窗口,如图2.1所示(这里假设第一次登录该论坛,浏览器没有cookie记录)。

   2.1(对应工程中自定义控件:AspNetForums/Theme/default/skins/ Skin-LoginSmall.ascx

或者点击导航栏的登录按钮会显示如图2.2所示:

2.2(对应工程中自定义控件:AspNetForums/Theme/default/skins/ Skin-Login.ascx

而这时并没有账号供登录,所以执行注册(或者点击导航栏的注册按钮)。如图2.3所示:

2.3(对应工程中自定义控件:AspNetForums/Theme/default/skins/ Skin-ForgottenPassword.ascx

 

       “注册新用户”提供密码账号的注册(如图2.4所示)。

2.4(对应工程中自定义控件:AspNetForums/Theme/default/skins/Skin-CreateNewAccount.ascx

 

“忘记密码”则是在密码丢失的情况下使用(如图2.5所示)。

2.5(对应工程中自定义控件:AspNetForums/Theme/default/skins/Skin-ChangePassword.ascx

(注意:当没有登录时的导航栏如图2.6所示)

2.6(对应工程中自定义控件:AspNetForums/Theme/default/skins/ Skin-NavigationMenu.ascx

当按照论坛注册通过后,系统会自动按照注册的用户名和密码登录,登陆后如图2.7所示:

2.7(对应工程中自定义控件:AspNetForums/Theme/default/skins/Skin-DisplayUserWelcome.ascx

而原来的“新用户注册”和“密码取回”的板块则会变成图2.8所示的样子:

2.8(对应工程中自定义控件:AspNetForums/Theme/default/skins/Skin-SearchRedirect.ascx

[注意这时的导航栏变成了这样(如图2.9所示)]

2.9(对应工程中自定义控件:AspNetForums/Theme/default/skins/ Skin-NavigationMenu.ascx

而图2.8相比较2.5多出的“我的版面”“控制面板”“用户列表”则是登录之后普通用户可以享受到的服务。如果您是版主则会多出“版务管理”,最后的“注销(PrideRoCK)”则是登出按钮。

 

此时有关于使用到的页面控件都已经找到了,但是并没有看到代码。按照图示的顺序从一到九分别察看html代码,

2.1 Skin-LoginSmall.ascx

2.2 Skin-Login.ascx

2.3 Skin-ForgottenPassword.ascx

2.4 Skin-CreateNewAccount.ascx

2.5 Skin-ChangePassword.ascx

2.6 Skin-NavigationMenu.ascx

2.7 Skin-DisplayUserWelcome.ascx

2.8 Skin-SearchRedirect.ascx

会发现都有这样一条,

<%@ Register TagPrefix="Forums" Namespace="AspNetForums.Controls" Assembly="AspNetForums.Controls" %>

现在打开类视图(图2.9所示),可以快速找到8个皮肤对应的control代码。

 

2.2    Control

列出皮肤文件对应的control层中的类。

皮肤文件

Control层中对应类名

Skin-LoginSmall.ascx

Login.cs

Skin-Login.ascx

Login.cs

Skin-ForgottenPassword.ascx

User ForgottenPassword.cs

Skin-CreateNewAccount.ascx

User /CreateUser.cs

Skin-ChangePassword.ascx

User /ChangePassword.cs

Skin-NavigationMenu.ascx

Skin-NavigationMenu.ascx(注销按钮)

Navigation /NavigationMenu.cs

Logout.cs

Skin-DisplayUserWelcome.ascx

Skins /DisplayUserWelcome.cs

Skin-SearchRedirect.ascx

Search /SearchRedirect.cs

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值