首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用多租站点存储管理帐户和根站点

使用多租站点存储管理帐户和根站点
EN

Stack Overflow用户
提问于 2014-03-18 23:24:32
回答 1查看 99关注 0票数 0

我正在创建一个多租ASP.NET MVC网站。

  1. 站点是分层的,所有站点都不可避免地导致一个“根”站点。
  2. 创建超级管理员用户。

是否有建议的方法来处理这些对象的初始创建?以下是我看到的选择:

  1. 将它们存储在Web.config中(但是如果我存储超级管理员的密码,它们会安全吗?)
  2. 在种子方法中创建所有这些对象(我使用的是实体框架CodeFirst)。
  3. 使用PreApplicationStartMethod确保它们的存在。

这里的标准方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2014-03-19 00:49:06

因此,这就是我如何使用SimpleMembershipProvider解决这个问题的方法,如果它们足够相似的话,也许您可以轻松地根据您的需要调整这些代码:

代码语言:javascript
复制
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
    public sealed class InitializeSimpleMembershipAttribute : ActionFilterAttribute
    {
        private static SimpleMembershipInitializer _initializer;
        private static object _initializerLock = new object();
        private static bool _isInitialized;

        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            // Ensure ASP.NET Simple Membership is initialized only once per app start
            LazyInitializer.EnsureInitialized(ref _initializer, ref _isInitialized, ref _initializerLock);
        }

        private class SimpleMembershipInitializer
        {
            public SimpleMembershipInitializer()
            {
                Database.SetInitializer<MyDbContext>(null);

                try
                {
                    using (var context = new MyDbContext())
                    {
                        if (!context.Database.Exists())
                        {
                            // Create the SimpleMembership database without Entity Framework migration schema
                            ((IObjectContextAdapter)context).ObjectContext.CreateDatabase();
                        }
                    }

                    WebSecurity.InitializeDatabaseConnection("DAL.MyDbContext", "UserProfiles", "UserId", "UserName", autoCreateTables: true);
                    if (!Roles.RoleExists("SuperAdmin"))
                    {
                        Roles.CreateRole("SuperAdmin");
                        WebSecurity.CreateUserAndAccount("SuperAdmin", "12345");
                        Roles.AddUsersToRole(new[] { "SuperAdmin" }, "SuperAdmin");
                    }

                }
                catch (Exception ex)
                {
                    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);
                }
            }
        }
    }

这是我在文件夹Filters中的主要项目。然后在Global.asax.cs中:

代码语言:javascript
复制
 protected void Application_Start()
    {
        //All the other stuff..
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22493187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档