2013-06-12 2 views
0

내 다른 프로젝트 나 메소드 이상 사용할 WebPortal에서 기본 RoleProviderMVC4 : 데이터베이스에 추가하는 역할

public class CodeFirstRoleProvider : RoleProvider 
{ 
    public override void CreateRole(string roleName) 
     { 
      if(string.IsNullOrEmpty(roleName)) return; 
      using(var context = new SISContext()) 
      { 
       var role = context.Roles.SingleOrDefault(rl => rl.RoleName == roleName);//Roles table exists in database 
       if(role == null) 
       { 
        var newRole = new Role 
             { 
              RoleId = Guid.NewGuid(), 
              RoleName = roleName 
             }; 
        context.Roles.Add(newRole); 
        context.SaveChanges(); 
       } 
      } 
     } 
} 

에서 상속 CodeFirstRoleProvider 클래스 Authorization라는 프로젝트를의이 방법

var _role = new CodeFirstRoleProvider(); 
      _role.CreateRole("Admin"); 
      _role.CreateRole("NonAdmin"); 
다음 가정 해 봅시다

지금이 코드를 내 webportal에 어디에 넣어야합니까? 따라서 응용 프로그램이 처음 실행될 때 이러한 역할이 데이터베이스에 추가됩니다.

이 프로그램이 처음 실행되고 누군가가 등록 버튼을 클릭한다고 가정 할 때 위에서 언급 한 역할과 함께 드롭 다운 목록을 갖고 싶습니다. 따라서 이러한 역할은 등록자가 클릭되기 전에 데이터베이스에 있어야합니다.

역할이 데이터베이스에 있으면 나중에이 값에 액세스 할 필요가 없습니다. 한 가지 방법은 수동으로 데이터베이스에 값을 쓰는 것이지만 사용하고 싶지는 않습니다.이 함수를 사용할 수 있기 때문입니다.

답변

0

어떻게하면 좋을까요?

[AllowAnonymous] 
     public ActionResult Login(string returnUrl) 
     { 
      var _role = new CodeFirstRoleProvider();//remove after role is added to database 
      _role.CreateRole("Admiin");//remove after role is added to database 
      _role.CreateRole("NonAdmin");//remove after role is added to database 

      ViewBag.ReturnUrl = returnUrl; 
      return View(); 
     } 

일단 역할이 데이터베이스에 추가되면 역할 추가를 수행하는 코드를 제거합니다.

+0

CodeFirstRoleProvider() 란 무엇입니까? – msysmilu