ASP.NET Portal Starter Kit是采用的“基于窗体的身份验证”的身份验证模式。Forms 身份验证通常指这样一个系统,在该系统中使用 HTTP 客户端重定向将未经身份验证的请求重定向到 HTML 窗体。如果应用程序需要在登录时通过 HTML 窗体收集自己的用户凭据,那么选择 Forms 身份验证就很好。用户提供凭据并提交该窗体。如果应用程序对请求进行身份验证,系统会发出一个 Cookie,在其中包含用于重新获取标识的凭据或密钥。随后发出在请求头中具有该 Cookie 的请求。ASP.NET 事件处理程序使用应用程序指定的任何验证方法对这些请求进行身份验证和授权。

数据库设计:

ASP.NET Portal Starter Kit中存储用户角色相关的表有三个:用户信息表(Portal_Users),角色信息表(Portal_Roles),用户角色关系表(Portal_UserRoles)。通过用户角色关系表将用户信息和角色信息管理起来,可实现一个用户可有多种角色,一个角色也可以同时是多个用户。三表之间的关系如下:

解读ASP.NET Portal Starter Kit(4)——角色身份认证篇

程序实现:

ASP.NET Portal Starter Kit中用户登录成功后以email为用户标识名称建立用户标识时同时触发Global.asax.cs中的Application_AuthenticateRequest事件,将登录用户的角色信息读入Context.User中。在DesktopDefault.aspx根据portalSettings.ActiveTab.AuthorizedRoles(当前活动标签的可访问属性)判断是否可访问该标签的内容。如果可访问则呈现该标签下的用户模块,不能访问就重定向到访问错误页(AccessDenied.aspx)。在管理用户是否可编辑用户模块信息时,是判断用户角色是否在模块指定的可编辑角色(模块的IsEditable属性)中。

关键代码:

1、  根据用户的Email获取用户的角色(以String[]的形式返回,一项表示一个角色,一个用户可有多个角色)(Security.cs中)

解读ASP.NET Portal Starter Kit(4)——角色身份认证篇public String[] GetRoles(String email) 

2、   检查当前角色是否在指定的角色中(Security.cs中)

解读ASP.NET Portal Starter Kit(4)——角色身份认证篇public static bool IsInRoles(String roles) 

3、登录验证代码(SignIn.ascx.cs中)

解读ASP.NET Portal Starter Kit(4)——角色身份认证篇private void SigninBtn_Click(object sender, System.Web.UI.ImageClickEventArgs e)

4Global.asax.cs中的Application_AuthenticateRequest事件

解读ASP.NET Portal Starter Kit(4)——角色身份认证篇protected void Application_AuthenticateRequest(Object sender, EventArgs e)

5DesktopDefault.aspx中的判断是否可访问该页的代码

解读ASP.NET Portal Starter Kit(4)——角色身份认证篇// 当前用户的角色不在当前活动标签的可访问角色中时,重定向到访问错误页
解读ASP.NET Portal Starter Kit(4)——角色身份认证篇
if (PortalSecurity.IsInRoles(portalSettings.ActiveTab.AuthorizedRoles) == false

6、用户是否可编辑用户模块的代码

解读ASP.NET Portal Starter Kit(4)——角色身份认证篇public static bool HasEditPermissions(int moduleId) 

(先列出一部分,等我全部整理好后再提供整站程序的下载)

更多相关内容:点击这里>>

相关文章:

  • 2022-12-23
  • 2021-05-30
  • 2022-12-23
  • 2021-05-25
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-05-03
猜你喜欢
  • 2022-12-23
  • 2021-06-03
  • 2021-10-05
  • 2021-08-31
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案