(生成数据表)
运行C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql.exe来生成该数据库的Membership结构
(用API实现登出功能)
//登出操作
FormsAuthentication.SignOut();
//跳转到登录页面
FormsAuthentication.RedirectToLoginPage();
//刷新页面,使登出生效
Response.Redirect(Request.CurrentExecutionFilePath);
(配置受权限控制的目录)
//给此目录的部分文件或目录添加例外,可不受权限控制
<location path="fm_head.aspx">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
<location path="Image">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
//配置此目录的可访问权限,将下面这段放在对应的目录下的web.config(不支持mvc)
<system.web>
<authorization>
<deny users="?"/>
<!--<allow roles="Admin,管理员"/>
<deny users="*"/>-->
</authorization>
</system.web>
//在mvc里的用法(放在根目录的web.config,下面的path中的Admin对应的是~/Views/Admin目录,注意:path中不能使用“~”)
<location path="Admin">
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>
(项目根目录的web.config)
Membership中Web.config的配置
<roleManager enabled="true"></roleManager>
<authentication mode="Forms">
<forms loginUrl="~/Admin/Login.aspx" timeout="1440"/>
</authentication>
<membership>
<providers>
<add name="AspNetSqlMembershipProvider"
type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="LocalSqlServer"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="true"
applicationName="/"
requiresUniqueEmail="false"
passwordFormat="Hashed"
maxInvalidPasswordAttempts="5"
minRequiredPasswordLength="7"
minRequiredNonalphanumericCharacters="1"
passwordAttemptWindow="10"
passwordStrengthRegularExpression=""/>
<< span>providers>
< span><membership>
下面是主要的几个属性的含义:
name:数据提供程序的名称,由于我们是从machine.config复制过来的,所以必须改名,防止重名
type:数据提供程序类型,如果使用的是MSSQL数据库,则保持不变即可,如果使用的是Oracle等其他数据库,则必须自己创建一个类来继承MembershipProvider抽象基类,重写里边的所有抽象方法,然后把类型写在这里即可。
connectionStringName:该属性必须指定在<connectionStrings>节点中,一个连接字符串的名字。
applicationName:应用程序名称,membership允许多个应用程序共同使用一个数据库来管理自己的用户、角色信息,各应用程序只需配置不同的applicationName即可,当然,如果想要多个应用程序使用同一份用户角色信息,只需设置一样的applicationName即可。
requiresUniqueEmail:顾名思义,用户注册时,是否需要提供未注册过的邮箱。
passwordFormat:密码存储格式,密码保存在数据库中的格式,最常用的有Clear(不加密)和Hashed(使用SHA1算法加密)
minRequiredPasswordLength:最小密码长度。
minRequiredNonalphanumericCharacters:指定有效密码中必须包含的特殊字符的最小数量,就是说不是字母也不是数字的字符的数量,比如+-*/,.什么的,增加密码强度