最近这个项目要求安全权限部分全部改版,经历要我负责这块,想来想去决定使用ASP.NET Membership机制。
但是一开始就遇到了一个以前没有想过的问题:
1 当配置文件中passwordFormat值为Hashed的时候,如何指定哈希加密的密钥?
2 如果不指定,会不会出现在不同的机器上加密出的结果不同的情况?(项目是要求各个不同的系统使用同一个数据库,也就是说不同的系统加密的方法和密钥应该相同。)
3 可不可以指定一个已经定义好的加密算法?
4 按照以下的配置文件运行网站,似乎machineKey节点的配置没有起到任何作用,因为重新生成128位随机validationKey值的时候,原有的用户任然能够正常登陆,请问这是什么问题?
Web.config(部分)
<roleManager enabled="true" defaultProvider="AspNetSqlRoleProvider" cookieTimeout="30" >
<providers>
<clear/>
<add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" applicationName="TiscsWebSite" connectionStringName="TiscsWebSiteDB" />
</providers>
</roleManager>
<membership defaultProvider="AspNetSqlMembershipProvider" hashAlgorithmType="SHA1" userIsOnlineTimeWindow="15">
<providers>
<clear/>
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" applicationName="TiscsWebSite" connectionStringName="TiscsWebSiteDB" passwordFormat="Hashed" minRequiredNonalphanumericCharacters="0" />
</providers>
</membership>
<siteMap defaultProvider="XmlSiteMapProvider" enabled="true">
<providers>
<clear/>
<add name="XmlSiteMapProvider" type="System.Web.XmlSiteMapProvider" siteMapFile="Web.sitemap" securityTrimmingEnabled="true" />
</providers>
</siteMap>
<machineKey validation="SHA1"
validationKey="BB4EF3909308D64CC94BF97014727AAD3C779A02FF319F955B7664CF0D7480838651E9C906A05684FEE68A32AD8446F9B2639246DBBF2162FE0D60FCFCCD1F78"
decryptionKey="E047EC5B8BA53955B5E46CDA8759B26C92619F22F551F10E" />
期待各位的解答。谢谢!