java membership_使用membership(System.Web.Security)来进行角色与权限管理

java membership_使用membership(System.Web.Security)来进行角色与权限管理1 membership 简介 2 membership 在 sqlserver 中的设置 3 配置 web config4 创建用户 CreateUserWi 控件 5 用户登录 login 控件 6 显示当前用户的名称 LoginName 控件 7 检测用户的身份验证状态的 LoginStatus 控件 8 为不同类别用户呈现不同内容的 LoginView 控件 9 更改密码的 ChangePasswo 控件

1、 membership简介

2、 membership在sql server中的设置

3、 配置web.config

4、 创建用户CreateUserWizard控件

5、 用户登录login控件

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

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

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

9、 更改密码的ChangePassword控件

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

11、 总结

1、membership简介

membership,真的很有趣,很方便,很有用。介绍给大家。

在 ASP.NET 应用程序中,Membership 类用于验证用户凭据并管理用户设置(如密码和电子邮件地址)。Membership 类可以独自使用,或者与 FormsAuthentication 一起使用以创建一个完整的 Web 应用程序或网站的用户身份验证系统。Login 控件封装了 Membership 类,从而提供一种便捷的用户验证机制。

Membership 类提供的功能可用于:

1)创建新用户。

2)将成员资格信息(用户名、密码、电子邮件地址及支持数据)存储在 Microsoft SQL Server 或其他类似的数据存储区。

3)对访问网站的用户进行身份验证。可以以编程方式对用户进行身份验证,也可以使用 Login 控件创建一个只需很少代码或无需代码的完整的身份验证系统。

4)管理密码。包括创建、更改、检索和重置密码等等。可以选择配置 ASP.NET 成员资格以要求一个密码提示问题及其答案来对忘记密码的用户的密码重置和检索请求进行身份验证。

默认情况下,ASP.NET 成员资格可支持所有 ASP.NET 应用程序。默认成员资格提供程序为 SqlMembershipProvider 并在计算机配置中以名称 AspNetSqlProvider 指定。SqlMembershipProvider 的默认实例配置为连接到 Microsoft SQL Server 的一个本地实例。

2、membership在sql server中的设置

要使用membership,需要对数据库进行一些设置,使用过membership的朋友知道,数据库中有一些固有的表、视图和存储过程,我们自己的表中没有这些东西。

不过,我们可以通过向导来创建它们,那就是aspnet_regsql.exe,一般来说它位于:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727(我的就在这里)

它既可以创建数据库中的选项,也可以移除这些设置。

在运行这个程序之前,我在sql server2005中建立了一个空的数据库:membershipdemo。

建立membershipdemo后,我们运行aspnet_regsql.exe,指定membership为membershipdemo。

[attach]34768[/attach]

完成之后,空空的数据库就有很多内容了,不过具体的内容暂时不必管。继续后面的内容。

[attach]34769[/attach]

3、配置web.config

web.config也是要修改的。

在system.web节点下添加authentication节点

membership既然是用于成员资格管理,当然要求登录验证身份,所以首先加上一个forms验证。

CODE:

同样在system.web节点下添加membership节点

CODE:

属性解释说明:

defaultProvider:提供程序的名称。默认为 AspNetSqlMembershipProvi

der。如果你有多个Provider的话,指定一个默认值是明智的做法

userIsOnlineTimeWindow:指定用户在最近一次活动的日期/时间戳之后被视为联机的分钟数。

hashAlgorithmType:用于哈希密码的算法的标识符,或为空以使用默认哈希算法。

connectionStringName:membership数据库的连接名称。

enablePasswordRetri:指示当前成员资格提供程序是否配置为允许用户检索其密码。

enablePasswordReset:指示当前成员资格提供程序是否配置为允许用户重置其密码。

requiresQuestionAndAnswer:指示默认成员资格提供程序是否要求用户在进行密码重置和检索时回答密码提示问题。

applicationName:应用程序的名称。

requiresUniqueEmail:指示成员资格提供程序是否配置为要求每个用户名具有唯一的电子邮件地址。

passwordFormat:指示在成员资格数据存储区中存储密码的格式。值可选Clear、Encrypted 和 Hashed。Clear 密码以明文形式存储,这可以提高存储和检索密码的性能,但安全性较差,当数据源安全性受到威胁时此类密码很容易被读取。Encrypted 密码在存储时进行了加密,可以在比较或检索密码时进行解密。此类密码在存储和检索时需要进行额外的处理,但比较安全,在数据源的安全性受到威胁时不容易被获取。Hashed 密码在存储到数据库时使用单向哈希算法和随机生成的 salt 值进行哈希处理。在验证某一密码时,将用数据库中的 salt 值对该密码进行哈希计算以进行验证。无法检索哈希密码。

maxInvalidPasswordAttempts:锁定成员资格用户前允许的无效密码或无效密码提示问题答案尝试次数。

minRequiredPasswordLength:密码所要求的最小长度。

minRequiredNonalphanumericCharacters:有效密码中必须包含的最少特殊字符数。

passwordAttemptWindow:在锁定成员资格用户之前允许的最大无效密码或无效密码提示问题答案尝试次数的分钟数。这是为了防止不明来源反复尝试来猜测成员资格用户的密码或密码提示问题答案的额外措施。

passwordStrengthRegularExpression:计算密码的正则表达式。

为membership配置web.config后,再配置其角色管理roleManager

也是在system.web下

CODE:

属性解释说明:

cacheRolesInCookie:指示当前用户的角色是否已缓存在某个 Cookie 中。

当 CacheRolesInCookie 属性在配置文件中设置为 true 时,每个用户的角色信息就会存储在客户端上的某个 Cookie 中。当角色管理检查确定某个用户是否属于某个特定角色时,在调用角色提供程序在数据源中检查角色列表之前,将先检查角色 Cookie。该 Cookie 在客户端上会动态更新以缓存最近已验证的角色名称。

web.config就配置差不多了。

真正步入正题。

4、创建用户CreateUserWizard控件

在vs2005中创建一个aspx页面,取名CreateUserWizard.aspx。

直接从toolbox中拖入一个CreateUserWizard控件,设置一下FinishDestinationPageUrl 属性,该属性指示用户创建完成后,用户点击“继续”后定向的页面。

CODE:

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

测试一下先!

提交,出现下面结果:

[attach]34772[/attach]

所以,正确设置membership后,注册用户就立马可以使用了。

这CreateUserWizard的默认模板

你也可以自己创建你需要的模板

vs2005可以帮你转换出来

你可以修改一下,转换后就是这样

代码会很多

5、用户登录login控件

CreateUserWizard可以直接拖出来用,login控件也是一样。

在页面中放入一个login,代码很简单

CODE:

属性解释:

DestinationPageUrl:设置在登录尝试成功时向用户显示的页面的 URL。

PasswordRecoveryText:设置密码恢复页链接的文本。

PasswordRecoveryUrl:设置密码恢复页的 URL。如果用户忘记密码,可以点击这个链接点找回他的密码。

同样,你也可以自写模板。

这次先不忙测试。

等一下后面的控件!

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

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

CODE:

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

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

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

CODE:

它包含两种状态:

1)已登录到网站。

2)已从网站注销。

当用户注销后,会给出一个“登录”的链接,用户可以点击这个链接来登录;当用户登录后,这个控件会自动转变为“注销”状态。

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

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

CODE:

您可以访问:User/Default.aspx

您也可以访问:Admin/Default.aspx

您可以访问User/Default.aspx

您不能访问Admin/Default.aspx

可以看到,这里包含了三个模板:LoggedInTemplate、AnonymousTemplate和RoleGroup的模板。

如果定义了LoggedInTemplate模板,那么该用户会看到该模板内的内容,除非该用户属于另一个角色组,且该角色组在已在RoleGroups的模板中的定义。

当匿名用户访问站点时,AnonymousTemplate内的内容会呈现给该用户。

在前面我们配置的web.config中启用了角色,我们现在为admin角色定义一个模板,你可以在上面的代码中找到。

到现在,我们就可以测试一下效果了。

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

我们登录一下,前面注册了一个用户,登录一下。

LoggedInTemplate没有起作用,而是member的角色模板起作用,这是因为,其实我们在CreateUserWizard做了设置,新用户注册以后直接纳入member角色组了。

在CreateUserWizard的CreatedUser事件中添加一句简单的话:

CODE:

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控件

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

CODE:

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

[attach]34780[/attach]

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

忘了密码怎么办,可以自已找回啦!

不过,在些之前,web.config得另有配置。

在system.web中的同级节点创建system.net节点,具体内容如下:

CODE:

我们使用了126的邮箱,其中的用户名与密码被省略。

创建PasswordRecovery.aspx,放入PasswordRecovery控件

CODE:

测试:

打开注册时填写的邮箱就可以看到了。

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

11.总结

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

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

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

https://www.cnblogs.com/end/category/82543.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/216428.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午11:52
下一篇 2026年3月18日 上午11:53


相关推荐

  • 常见的9种大数据分析方法

    常见的9种大数据分析方法数据分析是从数据中提取有价值信息的过程,过程中需要对数据进行各种处理和归类,只有掌握了正确的数据分类方法和数据处理模式,才能起到事半功倍的效果,以下是数据分析员必备的9种数据分析思维模式:1.分类分类是一种基本的数据分析方式,数据根据其特点,可将数据对象划分为不同的部分和类型,再进一步分析,能够进一步挖掘事物的本质。2.回归回归是一种运用广泛的统计分析方法,可以通过规定因变量和…

    2022年5月6日
    49
  • 移位运算(无符号移位运算,有符号移位运算)

    移位运算(无符号移位运算,有符号移位运算)移位运算,所有移位以5和-5为例移位运算左移(<<)正数负数带符号右移(>>)(右移向前面补对应的符号位所对应的值(正数补0,负数补1))正数负数不带符号右移(>>>)(>>>为java独有语法)正数负数移位运算可以移位运算的类型有:iuint,int,lang等类型.我们本次使用int类型一个int类型占4个字节,共32位,带符号…

    2022年7月13日
    20
  • JQuery的submitHandler

    之前做表单验证,有设置submitHandlersubmitHandler:function(){$(“form”).submit();}这样表单验证通过后会自动提交。。。。改为submitHandler:function(form){form.submit();}否则,button按钮提交表单之后,表单会提交两次,前端造成stack溢出…

    2022年4月5日
    276
  • R语言安装~R,Rstudio

    R语言安装~R,Rstudio一、R语言安装首先进入官网:https://cran.r-project.org下载相应版本的安装包点击base点击DownloadR4.1.2forWindows,即可开始下载下载完成后,点击该安装包,开始下载我要安装的是64bit,把32bit的勾划掉,继续点击下一步,直到安装完成二、Rstudio安装下载地址为:DownloadtheRStudioIDE-RStudio点击free下的download…

    2022年6月27日
    46
  • MJ 入门|2024 Midjourney 入门保姆级教程

    MJ 入门|2024 Midjourney 入门保姆级教程

    2026年3月13日
    3
  • Linux删除软链接

    Linux删除软链接首先我们先来创建一个文件#mkdirtest_chk#touchtest_chk/test.txt#vimtest_chk/test.txt(这一步随便在这个test.txt里写点东东即可)下面我们来创建test_chk上当的软链接#ln-stest_chktest_chk_ln软链接创建好了,我们来看看怎么删除它正确的删除方式(删除软链接,

    2022年6月18日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号