当前位置: 代码迷 >> 综合 >> asp.net mvc4 中自动生成的权限管理表的说明
  详细解决方案

asp.net mvc4 中自动生成的权限管理表的说明

热度:64   发布时间:2023-12-22 09:49:01.0

因为是转载文章 在此标明出处,以前有文章是转的没标明的请谅解,因为有些已经无法找到出处,或者与其它原因。

如有冒犯请联系本人,或删除,或标明出处。

因为好的文章,以前只想收藏,但连接有时候会失效,所以现在碰到好的直接转到自己这里。

原文 出处http://blog.csdn.net/hj458377603/article/details/9451603



1.asp.net mvc自带的权限表的创建是在InitializeSimpleMembershipAttribute.cs中实现的。


2.InitializeSimpleMembershipAttribute.cs

[csharp]  view plain copy print ?
  1. using System;  
  2. using System.Data.Entity;  
  3. using System.Data.Entity.Infrastructure;  
  4. using System.Threading;  
  5. using System.Web.Mvc;  
  6. using WebMatrix.WebData;  
  7. using FindU1.Models;  
  8.   
  9. namespace FindU1.Filters  
  10. {  
  11.     [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]  
  12.     public sealed class InitializeSimpleMembershipAttribute : ActionFilterAttribute  
  13.     {  
  14.         private static SimpleMembershipInitializer _initializer;  
  15.         private static object _initializerLock = new object();  
  16.         private static bool _isInitialized;  
  17.   
  18.         public override void OnActionExecuting(ActionExecutingContext filterContext)  
  19.         {  
  20.             // Ensure ASP.NET Simple Membership is initialized only once per app start  
  21.             LazyInitializer.EnsureInitialized(ref _initializer, ref _isInitialized, ref _initializerLock);  
  22.         }  
  23.   
  24.         private class SimpleMembershipInitializer  
  25.         {  
  26.             public SimpleMembershipInitializer()  
  27.             {  
  28.                 Database.SetInitializer<UserContext>(null);  
  29.   
  30.                 try  
  31.                 {  
  32.                     using (var context = new UserContext())  
  33.                     {  
  34.                         if (!context.Database.Exists())  
  35.                         {  
  36.                             // Create the SimpleMembership database without Entity Framework migration schema  
  37.                             ((IObjectContextAdapter)context).ObjectContext.CreateDatabase();  
  38.                         }  
  39.                     }  
  40.                     //Web.config中的配置,前四个参数分别是数据库连接ConnectionString,表名称,UserId,UserName(对应的数据库中的字段)  
  41.                     WebSecurity.InitializeDatabaseConnection("UserContext""Users""UserID""Email", autoCreateTables: true);  
  42.                 }  
  43.                 catch (Exception ex)  
  44.                 {  
  45.                     throw new InvalidOperationException("The ASP.NET Simple Membership database could not be initialized. For more information, please see http://go.microsoft.com/fwlink/?LinkId=256588", ex);  
  46.                 }  
  47.             }  
  48.         }  
  49.     }  
  50. }  

3.Web.Config中的数据库的配置

[html]  view plain copy print ?
  1. <connectionStrings>  
  2.     <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-FindU1-20130720205848;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-FindU1-20130720205848.mdf"  
  3.       providerName="System.Data.SqlClient" />  
  4.     <add name="UserContext" connectionString="Data Source=(localdb)\v11.0; Initial Catalog=UserContext-20130721150726; Integrated Security=True; MultipleActiveResultSets=True; AttachDbFilename=|DataDirectory|UserContext-20130721150726.mdf"  
  5.       providerName="System.Data.SqlClient" />  
  6.   </connectionStrings>  

4.出现 未启用角色管理器功能。错误



此时需要修改配置文件,加上

[html]  view plain copy print ?
  1. <compilation debug="true" targetFramework="4.5">  
  2.       <assemblies>  
  3.         <add assembly="WebMatrix.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>  
  4.         <add assembly="WebMatrix.WebData, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>  
  5.       </assemblies>  
  6. </compilation>