asp.net用网络管理工具来创建项目的角色(Roles)以及完成权限控制遇到的问题(基于MusicStore项目)
2012-09-04 17:59
916 查看
这几天在做MusicStore项目的练习,但是当做到创建项目角色,来完成访问页面的不同权限的时候就出问题了,
不过刚刚已经解决了,先总结如下:
问题:
当创建一个项目的时候当然不希望所有的用户都能任意访问你的页面,一般是后台的部分只有管理员才能访问
那该如何设置这个管理员角色呢?打开项目点击“项目”->“asp.net 配置”,自动打开浏览器,启动网站
管理工具。
其实这个网络管理工具就是一个图形化的Web.config文件控制器,你的所有图形化的操作会反应在项目的
web.config文件中。点击"安全",里面有创建管理角色等功能,但是问题就是我的应用就是无法打开这个
“安全”选项。
解决:
接下来我开始一点点找问题的原因,我发现用网络管理工具之所以能够创建用户,创建角色其实是调用项目
里面的数据库文件,对其进行了一定的操作。但是MusicStore项目指导书里面并没有详细的提这一点,按
照上面的提示一步步做是行不通的。
我重新建了一个mvc3的项目,记得要建Internet项目,而不是empty。项目默认会创建一个asp.net数
据库来保存个人帐号信息,然后再次启用这个网络管理工具,这是“安全”选项是好用的。
通过自己的项目跟新项目中web.config文件的对比我发现了一些不同之处。
我自己的项目的connectionstrings的name是MusicStoreEntities。但是程序
默认的数据库连接会是DefaultConnection,而当使用网站管理工具创建角色、用户
的是有他默认识别的时DefaultConnection,而不是MusicStoreEntities。
所以我的解决办法是又添加了一个新的连接,通过新连接创建数据库单独来存放用户信息。
<add name="DefaultConnection" providerName="System.Data.SqlClient"
connectionString="Data Source=(LocalDb)\v11.0;
Initial Catalog=aspnetDB;Integrated Security=SSPI;
AttachDBFilename=|DataDirectory|\aspnetDB.mdf" />。
这样之后还是没能解决问题,郁闷~
通过一番折腾,发现其实web.config里面的<profile> <membership> <roleManager>
<sessionState>这几个节点是真正起作用的,每个节点里面都有一个<providers>子节点。
这是里面的connectionStringName属性来指明我们的连接字符串的名字(DefaultConnection)
但是把这个(比如<profile>)节点它不是直接能调用<providers>子节点的
connectionStringName。而是通过一个defaultProvider属性,属性的值就是<providers>
节点的name值。这样一折腾才会调用到connectionStringName继而调用到DefaultConnection。
就拿<membership>来讲,它的详细代码如下:
我的错误就是忘记给<membership>节点加上defaultProvider属性了。这一点完成之后,便能顺利的
利用网站管理工具了。另外通过这个例子我还明白了为什么默认情况下保存帐号的数据库里面会生成这么多
表呢,这些表都是哪些代码作用生成的呢。(这下基本明吧了吧^_^)
是不是觉得很多表的名字其实与web.config里面的节点的名字是一一对应的啊。
好了,就到这了吧,希望也能对刚入手mvc的大家有所帮助。
^_^同为新手望多交流,新浪围脖:@开拓者345
不过刚刚已经解决了,先总结如下:
问题:
当创建一个项目的时候当然不希望所有的用户都能任意访问你的页面,一般是后台的部分只有管理员才能访问
那该如何设置这个管理员角色呢?打开项目点击“项目”->“asp.net 配置”,自动打开浏览器,启动网站
管理工具。
其实这个网络管理工具就是一个图形化的Web.config文件控制器,你的所有图形化的操作会反应在项目的
web.config文件中。点击"安全",里面有创建管理角色等功能,但是问题就是我的应用就是无法打开这个
“安全”选项。
解决:
接下来我开始一点点找问题的原因,我发现用网络管理工具之所以能够创建用户,创建角色其实是调用项目
里面的数据库文件,对其进行了一定的操作。但是MusicStore项目指导书里面并没有详细的提这一点,按
照上面的提示一步步做是行不通的。
我重新建了一个mvc3的项目,记得要建Internet项目,而不是empty。项目默认会创建一个asp.net数
据库来保存个人帐号信息,然后再次启用这个网络管理工具,这是“安全”选项是好用的。
通过自己的项目跟新项目中web.config文件的对比我发现了一些不同之处。
我自己的项目的connectionstrings的name是MusicStoreEntities。但是程序
默认的数据库连接会是DefaultConnection,而当使用网站管理工具创建角色、用户
的是有他默认识别的时DefaultConnection,而不是MusicStoreEntities。
所以我的解决办法是又添加了一个新的连接,通过新连接创建数据库单独来存放用户信息。
<add name="DefaultConnection" providerName="System.Data.SqlClient"
connectionString="Data Source=(LocalDb)\v11.0;
Initial Catalog=aspnetDB;Integrated Security=SSPI;
AttachDBFilename=|DataDirectory|\aspnetDB.mdf" />。
这样之后还是没能解决问题,郁闷~
通过一番折腾,发现其实web.config里面的<profile> <membership> <roleManager>
<sessionState>这几个节点是真正起作用的,每个节点里面都有一个<providers>子节点。
这是里面的connectionStringName属性来指明我们的连接字符串的名字(DefaultConnection)
但是把这个(比如<profile>)节点它不是直接能调用<providers>子节点的
connectionStringName。而是通过一个defaultProvider属性,属性的值就是<providers>
节点的name值。这样一折腾才会调用到connectionStringName继而调用到DefaultConnection。
就拿<membership>来讲,它的详细代码如下:
<membership defaultProvider="DefaultMembershipProvider"> <providers> <add connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> </providers> </membership>
我的错误就是忘记给<membership>节点加上defaultProvider属性了。这一点完成之后,便能顺利的
利用网站管理工具了。另外通过这个例子我还明白了为什么默认情况下保存帐号的数据库里面会生成这么多
表呢,这些表都是哪些代码作用生成的呢。(这下基本明吧了吧^_^)
是不是觉得很多表的名字其实与web.config里面的节点的名字是一一对应的啊。
好了,就到这了吧,希望也能对刚入手mvc的大家有所帮助。
^_^同为新手望多交流,新浪围脖:@开拓者345
相关文章推荐
- ASP.NET MVC 中如何实现基于角色的权限控制
- ASP.NET MVC 中如何实现基于角色的权限控制
- ASP.NET MVC 中如何实现基于角色的权限控制
- Asp.Net Core 2.0 项目实战(11) 基于OnActionExecuting全局过滤器,页面操作权限过滤控制到按钮级
- ASP.NET MVC 中如何实现基于角色的权限控制
- ASP.NET MVC 中实现基于角色的权限控制的处理方法
- ASP.NET MVC 中实现基于角色的权限控制的处理方法
- [ASP.net教程]vs2012创建mvc4项目部署iis所遇到的问题
- 在Asp.Net项目中应用Jquery.validation时遇到的一个问题
- 创建asp.net网站解决方案文件(.sln)不和项目在同一目录问题
- 配置asp.net IIS服务器遇到的问题以及详细图例解决方案
- [WCF权限控制]ASP.NET Roles授权[下篇]
- ASP.NET项目中调试时创建了多个端口的问题
- Visual Studio2005或在asp.net中常碰到的问题:未能创建Mutex,重新把ASP.NET 2.0注册到IIS中,IIS_WPG的权限
- asp.net项目运行的权限问题
- 在Windows下创建cocos2dx的android项目build_native.sh时如果遇到权限问题的解决办法
- [WCF权限控制]ASP.NET Roles授权[上篇]
- ASP.NET 动态创建TextBox 以及取值问题
- ASP.NET执行DTS时遇到的权限问题
- Win7旗舰版中的IIS配置asp.net权限配置及遇到的问题