ASP.net Membership角色与权限管理(二)

话接上文

现在不做任何设置,在vs2005的中design视图中可以看到

所以,正确设置membership后,注册用户就立马可以使用了。这是CreateUserWizard的默认模板,你也可以自己创建你需要的模板,vs2005可以帮你转换出来。你可以修改一下,转换后就是这样。

按 Ctrl+C 复制代码

按 Ctrl+C 复制代码

5.用户登录login控件

CreateUserWizard 可以直接拖出来用,login 控件也是一样。在页面中放入一个login,代码很简单。

<asp:Login ID="Login1" runat="server" DestinationPageUrl="~/admin/Default.aspx" PasswordRecoveryText="找回密码" PasswordRecoveryUrl="PasswordRecovery.aspx"> 
</asp:Login>

属性解释:
DestinationPageUrl:设置在登录尝试成功时向用户显示的页面的 URL。 
PasswordRecoveryText:设置密码恢复页链接的文本。
PasswordRecoveryUrl:设置密码恢复页的 URL。 如果用户忘记密码,可以点击这个链接点找回他的密码。

1 <asp:Login ID="Login1" runat="server" DestinationPageUrl="~/admin/Default.aspx" PasswordRecoveryText="找回密码" PasswordRecoveryUrl="PasswordRecovery.aspx">
 2     <LayoutTemplate>
 3         <table border="0" cellpadding="1" cellspacing="0" style="border-collapse: collapse">
 4             <tr>
 5                 <td>
 6                     <table border="0" cellpadding="0">
 7                         <tr>
 8                             <td align="center" colspan="2">
 9                                 登录</td>
10                         </tr>
11                         <tr>
12                             <td align="right">
13                                 <asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserName">用户名:</asp:Label></td>
14                             <td>
15                                 <asp:TextBox ID="UserName" runat="server"></asp:TextBox>
16                                 <asp:RequiredFieldValidator ID="UserNameRequired" runat="server" ControlToValidate="UserName"
17                                     ErrorMessage="必须填写“用户名”。" ToolTip="必须填写“用户名”。" ValidationGroup="Login1">*</asp:RequiredFieldValidator>
18                             </td>
19                         </tr>
20                         <tr>
21                             <td align="right">
22                                 <asp:Label ID="PasswordLabel" runat="server" AssociatedControlID="Password">密码:</asp:Label></td>
23                             <td>
24                                 <asp:TextBox ID="Password" runat="server" TextMode="Password"></asp:TextBox>
25                                 <asp:RequiredFieldValidator ID="PasswordRequired" runat="server" ControlToValidate="Password"
26                                     ErrorMessage="必须填写“密码”。" ToolTip="必须填写“密码”。" ValidationGroup="Login1">*</asp:RequiredFieldValidator>
27                             </td>
28                         </tr>
29                         <tr>
30                             <td colspan="2">
31                                 <asp:CheckBox ID="RememberMe" runat="server" Text="下次记住我。" />
32                             </td>
33                         </tr>
34                         <tr>
35                             <td align="center" colspan="2" style="color: red">
36                                 <asp:Literal ID="FailureText" runat="server" EnableViewState="False"></asp:Literal>
37                             </td>
38                         </tr>
39                         <tr>
40                             <td align="right" colspan="2">
41                                 <asp:Button ID="LoginButton" runat="server" CommandName="Login" Text="登录" ValidationGroup="Login1" />
42                             </td>
43                         </tr>
44                         <tr>
45                             <td colspan="2">
46                                 <asp:HyperLink ID="PasswordRecoveryLink" runat="server" NavigateUrl="PasswordRecovery.aspx">找回密码</asp:HyperLink>
47                             </td>
48                         </tr>
49                     </table>
50                 </td>
51             </tr>
52         </table>
53     </LayoutTemplate>
54 </asp:Login>

这次先不忙测试。等一下后面的控件!

6.显示当前用户的名称LoginName控件

这个控件很简单,就是用来呈现用户名的。

<asp:LoginName ID="LoginName1" runat="server" FormatString="您好,{0},您目前的身份是:注册用户" />

如果当前登录的是blueidea,那么显示的就是“您好,blueidea,您目前的身份是:注册用户”。

7.检测用户的身份验证状态的LoginStatus控件

可以说是最简单的控件了。

<asp:LoginStatus ID="LoginStatus1" runat="server" />

它包含两种状态:1)已登录到网站。2)已从网站注销。
当用户注销后,会给出一个“登录”的链接,用户可以点击这个链接来登录;当用户登录后,这个控件会自动转变为“注销”状态。

8.为不同类别用户呈现不同内容的LoginView控件

全部登录控件都可以直接拿来用,不过,这一个我们来做更多一些东西。

1 <asp:LoginView ID="LoginView1" runat="server">
 2                 <LoggedInTemplate>
 3                     <asp:LoginName ID="LoginName1" runat="server" FormatString="您好,{0},您已经登录了。" />
 4                 </LoggedInTemplate>
 5                 <AnonymousTemplate>
 6                     <asp:Label ID="Label2" runat="server" Text="您尚未登录,请"></asp:Label><asp:LoginStatus
 7                         ID="LoginStatus1" runat="server" />
 8                 </AnonymousTemplate>
 9                 <RoleGroups>
10                     <asp:RoleGroup Roles="admin">
11                         <ContentTemplate>
12                             <asp:LoginName ID="LoginName1" runat="server" FormatString="您好,{0},您目前的身份是:管理员" />
13                             <br />
14                             您可以访问:<asp:HyperLink ID="HyperLink1" NavigateUrl="User/Default.aspx" runat="server">User/Default.aspx</asp:HyperLink>
15                             <br />
16                             您也可以访问:<asp:HyperLink ID="HyperLink2" NavigateUrl="Admin/Default.aspx" runat="server">Admin/Default.aspx</asp:HyperLink>
17                             <br />
18                             <asp:LoginStatus ID="LoginStatus3" runat="server" />
19                         </ContentTemplate>
20                     </asp:RoleGroup>
21                     <asp:RoleGroup Roles="member">
22                         <ContentTemplate>
23                             <asp:LoginName ID="LoginName1" runat="server" FormatString="您好,{0},您目前的身份是:注册用户" />
24                             <br />
25                             您可以访问<asp:HyperLink ID="HyperLink1" NavigateUrl="User/Default.aspx" runat="server">User/Default.aspx</asp:HyperLink>
26                             <br />
27                             您不能访问<asp:HyperLink ID="HyperLink2" NavigateUrl="Admin/Default.aspx" runat="server">Admin/Default.aspx</asp:HyperLink>
28                             <br />
29                             <asp:LoginStatus ID="LoginStatus2" runat="server" />
30                         </ContentTemplate>
31                     </asp:RoleGroup>
32                 </RoleGroups>
33             </asp:LoginView>

可以看到,这里包含了三个模板:LoggedInTemplate、AnonymousTemplate和RoleGroup的模板。如果定义了LoggedInTemplate模板,那么该用户会看到该模板内的内容,除非该用户属于另一个角色组,且该角色组在已在RoleGroups的模板中的定义。当匿名用户访问站点时,AnonymousTemplate内的内容会呈现给该用户。在前面我们配置的web.config中启用了角色,我们现在为admin角色定义一个模板,你可以在上面的代码中找到。 
到现在,我们就可以测试一下效果了。

可以看到,我们还没有登录,AnonymousTemplate的内容呈现在我们的面前。而且其中的LoginStatus显示的状态是“登录”状态。我们登录一下,前面注册了一个用户,登录一下。

LoggedInTemplate没有起作用,而是member的角色模板起作用,这是因为,其实我们在CreateUserWizard做了设置,新用户注册以后直接纳入member角色组了。在CreateUserWizard的CreatedUser事件中添加一句简单的话:

protected void CreateUserWizard1_CreatedUser(object sender, EventArgs e) 

Roles.AddUserToRole(CreateUserWizard1.UserName, "member"); 
}

再来解释一下上面的的“你可以访问……”是什么意思。在此之前我其实已经添加了两个角色:member和admin。角色添加方法很简单:在vs2005中选择 网站->ASP.NET配置->安全->创建或管理角色。跟上面的的配合,我们添加一个角色叫“admin”。

再选择“创建访问规则”来创建访问规则。给admin文件创建下面规则,如图示:

拒绝member组和匿名用户,只允许admin组的用户访问admin文件夹。给user文件夹创建如下访问规则。

拒绝匿名用户,允许member组和admin组的用户。

当新注册用户登录后,它们可以访问到user文件夹下的文件

但是,如果访问admin文件夹时则会被定向到登录页。

9.更改密码的ChangePassword控件

如果更改密码,就使用它来修改。

<asp:ChangePassword ID="ChangePassword1" runat="server"> 
</asp:ChangePassword>

不需要设置,就可以修改密码了。

10.自助找回密码的PasswordRecovery控件

忘了密码怎么办,可以自已找回啦!不过,在些之前,web.config得另有配置。在system.web中的同级节点创建system.net节点,具体内容如下:

<system.net> 
<mailSettings> 
<smtp deliveryMethod="Network" from="*@126.com"> 
<network defaultCredentials="false" host="smtp.126.com" password="*" port="25" userName="*@126.com" /> 
</smtp> 
</mailSettings> 
</system.net>

我们使用了126的邮箱,其中的用户名与密码被省略。创建PasswordRecovery.aspx,放入PasswordRecovery控件。

<asp:PasswordRecovery ID="PasswordRecovery1" runat="server"> 
</asp:PasswordRecovery>

测试:

我们就可以使用新的密码来登录站点了。

11.总结

membership在接触之前,觉得比较神秘,在接触之后,发现其实也不难懂,而且与login系列控件配合得很完美。如果你想要快速搭建一个用户管理的平台,这是一个不错的选择,是偷懒者的首选。

如果你嫌MS的控件太难看,也没有关系,因为它又有多种多样的模板,通过自定义模板你就能实现你要看的界面。

不过,membership是设计得适合大多数的情况,所以也是一种万金油的做法,与你要的功能可能不完全符合,不过,学习一下它的做法,学习它数据库的设计,不也是一个好东西吗?

时间: 2024-11-05 02:19:20

ASP.net Membership角色与权限管理(二)的相关文章

ASP.net Membership角色与权限管理(一)

ASP.net Membership角色与权限管理(一) 本文目录:1.membership简介2.membership在sql server中的设置3.配置web.config4.创建用户CreateUserWizard控件5.用户登录login控件6.显示当前用户的名称LoginName控件7.检测用户的身份验证状态的LoginStatus控件8.为不同类别用户呈现不同内容的LoginView控件9.更改密码的ChangePassword控件10.自助找回密码的PasswordRecover

springBoot+springSecurity 数据库动态管理用户、角色、权限(二)

序: 本文使用springboot+mybatis+SpringSecurity 实现数据库动态的管理用户.角色.权限管理 本文细分角色和权限,并将用户.角色.权限和资源均采用数据库存储,并且自定义滤器,代替原有的FilterSecurityInterceptor过滤器, 并分别实现AccessDecisionManager.InvocationSecurityMetadataSourceService和UserDetailsService,并在配置文件中进行相应配置. spring secur

【视频分享】Liger UI实战集智建筑工程管理系统配商业代码(打印报表、角色式权限管理)

QQ 2059055336 课程讲师:集思博智 课程分类:.net 适合人群:中级 课时数量:23课时 用到技术:Liger UI框架.AJAX.JSON数据格式的序列化与反序列化.角色的交叉权限管理 本课程代码为商业版代码,用户可直接部署运行. 一.系统介绍: 集智建筑工程管理系统是专为建筑类企业打造的一款管理软件.本着"一工程一台帐"的原则,加强对工程的资金管理,解决工程技术部门.工程管理部门.财务部之间数据的共享,方便领导查询工程进度与回款情况,更好的进行查询统计,提供多种统计图

从零开始——基于角色的权限管理01(补充)

此博文较为详细的介绍从零开始--基于角色的权限管理01文中的两个部分的流程(解释代码). 1) index.jsp中提交跳转action action的login,获取jsp页面传过来的用户名密码和验证码,进行验证 首先到userDao中,执行login方法,判断是否存在这组用户名和密码 接着到roleDao中,执行getRoleNameById以获取角色名 最后,进入main.jsp中 2)在main.jsp中,有一个树的显示,再次进入authServlet中执行menuAction   先后

Oracle用户及角色的权限管理[Oracle基础]

1.查看所有用户: select * from dba_users; select * from all_users; select * from user_users; 2.查看用户或角色系统权限(直接赋值给用户或角色的系统权限): select * from dba_sys_privs; select * from user_sys_privs; 3.查看角色(只能查看登陆用户拥有的角色)所包含的权限 sql>select * from role_sys_privs; 4.查看用户对象权限:

asp.net mvc +easyui 实现权限管理(二)

一写完后,好久没有继续写了.最近公司又在重新开发权限系统了,但是由于我人微言轻,无法阻止他们设计一个太监版的权限系统.想想确实是官大一级压死人啊, 没办法我只好不参与了 让他们去折腾. 我就大概说一下公司目前在做的权限系统,各位看官给点评价. 设计总体要求: (注:项目名称为 统一权限管理系统) 1.做一个通用权限系统. 2.权限设计按照角色设置. 3.提供统一权限接口 以上就是整体要求,解释一下, 我们的通用是指的以后每开发一套新系统,只需要在统一权限管理系统中进行相应的配置就好了,无需再去开

JAVAWEB开发之权限管理(二)——shiro入门详解以及使用方法、shiro认证与shiro授权

shiro介绍 什么是shiro shiro是Apache的一个开源框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份认证,权限授权.加密.会话管理等功能,组成了一个通用的安全认证框架.它可以实现如下的功能: 1.验证用户 2.对用户执行访问控制,如:判断用户是否具有角色admin,判断用户是否拥有访问的资源权限. 3.在任何环境下使用SessionAPI.例如C/S程序 4.可以使用多个用户数据源.例如一个是Oracle数据库,另外一个是MySQL数据库. 5.单点登录(SSO)功能

RBAC基于角色的权限管理模型

一.权限管理模型的必要性: a. 安全性:防止误操作,防止数据泄露,保证信息的安全. b. 数据隔离:保持不同的角色具有不同的权限,只能看到自己权限范围内的数据 二.权限管理模型的发展: a. 传统的权限管理:随着用户数量的增大和用户权限区别的增大,传统的权限管理需要针对每个用户依次管理,成本较高. b. RBAC:Role-Based Access Control 用户-角色-权限,权限与角色相关联,用户与角色相关联,通过对用户赋予相应的角色,再去获取相应的权限,从而实现了用户与权限的解耦,具

SQL Server与Oracle对比学习:权限管理(二) 一些有趣的比喻

http://blog.csdn.net/weiwenhp/article/details/8094739 目录(?)[-] SQL Server权限管理 login 与user的区别 角色role 赋予权限 用比喻来对比Oracle 与SQL Server Oracle的世界 SQL Server的世界 SQL Server权限管理 login 与user的区别 我玩惯了Oracle刚一来玩SQL Server就被login 和user这样的概念搞的有点迷糊了.因为Oracle中没有这样的区分