2012-09-23 22 views
5

Tôi thouht nó sẽ là một điều đơn giản để thêm SimpleMembersihp vào một trang web MVC4. Không phải vậy. Mã templated (ví dụ C#) là rất phù hợp để hỗ trợ nó, nhưng web.config chủ yếu là bất khả tri - không có các yếu tố có thể cấu hình bất kỳ cơ chế bảo mật cụ thể nào. Tôi đã làm theo hướng dẫn MVC4 của Scott Allen về Pluralsight-- rằng hỗn hợp aspnet-Membership với công cụ EF. Có lẽ tôi đã bỏ lỡ một cái gì đó, nhưng C# thành viên-lớp học không tương tác với aspnet-thành viên, họ đã làm SimpleMembership. Vì vậy, tôi loại bỏ aspnet-thành viên, nhưng bây giờ tôi không thể có được PackageManager để 'cập nhật cơ sở dữ liệu'. Nó phàn nàn "Bạn phải gọi phương thức WebSecurity.InitializeDatabaseConnection ...". Vì vậy, tôi đã thêm một tập tin _AppStart.cshtml với các cuộc gọi, nhưng PM có vẻ không biết. _AppStart.cshtml:_AppStart.cshtml, PackageManager, WebMatrix

@using WebMatrix.WebData; 
@{ 
    WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", true); 
} 

Web.config:

<appSettings> 
    <add key="enableSimpleMembership" value="true" /> 
    <add key="webpages:Version" value="2.0.0.0" /> 
    <add key="webpages:Enabled" value="false" /> 
    <add key="PreserveLoginUrl" value="true" /> 
    <add key="ClientValidationEnabled" value="true" /> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true" /> 
    </appSettings> 

    <roleManager enabled="true" defaultProvider="simple"> 
    <providers> 
     <clear/> 
     <add name="simple" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData" /> 
     </providers> 
    </roleManager> 


    <membership defaultProvider="simple"> 
     <providers> 
     <clear/> 
     <add name="simple" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" /> 
     </providers> 
    </membership 

Configuration.cs:

protected override void Seed(eManager.Web.Infrastructure.DepartmentDb context) 
{ 
    context.Departments.AddOrUpdate(d => d.Name, 
     new Department() { Name = "Engineering" }, 
     new Department() { Name = "Sales" }, 
     new Department() { Name = "Shipping" }, 
     new Department() { Name = "Human Resources" } 
    ); 

    SimpleRoleProvider roles = new WebMatrix.WebData.SimpleRoleProvider(); 
    SimpleMembershipProvider membership = new SimpleMembershipProvider(); 
    if (!roles.RoleExists("Admin")) 
    { 
     roles.CreateRole("Admin"); 
    } 

    //if (membership.GetUser("ej", false) == null) 
    //{ 
     // membership.CreateUserAndAccount("ej", "[email protected]", false); 
     // string[] u = { "ej" }; 
     // string[] r = { "Admin" }; 
     // roles.AddUsersToRoles(u, r); 
     //} 
} 

Vai trò "Quản trị" không được tạo ra.?

+0

Hãy khái quát mẫu mã của bạn và xác định những gì các vấn đề thực tế mà bạn đang có được. –

+1

Vị trí trong cây dự án của bạn đã thêm tệp? Tôi đã thêm nó vào thư mục gốc của ứng dụng web và nó đã làm việc cho tôi. Trân trọng – Jaime

Trả lời

11

Hãy thử thêm mã

WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", true);

Để Application_Start của bạn trong global.asax.cs

_appStart.cshtml không được sử dụng trong MVC.

Các vấn đề liên quan