2013-01-23 2 views
3

MVC4 인터넷 응용 프로그램 (EF 5 코드 우선)에서 사용 가능한 기본 멤버쉽 시스템을 수정/확장/사용자 정의하는 방법에 대한 자세한 정보를 검색하기 위해 최선을 다했습니다. Visual Studio 2012 Express.MVC4 인터넷 응용 프로그램 WebSecurity/SimpleMembership을 확장/사용자 정의하는 방법

전자 메일 확인을 구현하는 방법을 알고 싶습니다. 사용자가 전자 메일을 등록 할 때 활성화 링크가 전송됩니다. 링크를 클릭하면 계정이 활성화되고 사용자 이름이나 이메일을 사용하여 로그인 할 수 있습니다.

또한 등록하는 동안 등록 할 때 기본 역할을 할당하여 등록 된 사용자의 간단한 역할을 구현하는 방법을 알고 싶습니다.

비슷한 질문 : How do I manage profiles using SimpleMembership?

How do you extend the SimpleMembership authentication in ASP.NET MVC4

하지만 난 정말 기존 simplemembership 시스템과 함께 일하고 싶습니다.

이 포스팅은 꽤 가까이 : http://blog.longle.net/2012/09/25/seeding-users-and-roles-with-mvc4-simplemembershipprovider-simpleroleprovider-ef5-codefirst-and-custom-user-properties/

나는 또한이 게시물을 본 적이 : http://weblogs.asp.net/thangchung/archive/2012/11/15/customize-the-simplemembership-in-asp-net-mvc-4-0.aspx

이것은 또한 : http://weblogs.asp.net/jgalloway/archive/2012/08/29/simplemembership-membership-providers-universal-providers-and-the-new-asp-net-4-5-web-forms-and-asp-net-mvc-4-templates.aspx

이것은 내가 지금까지 찾은 가장 가까운 유용하지만 웹 페이지 : http://blog.osbornm.com/archive/2010/07/21/using-simplemembership-with-asp.net-webpages.aspx

나는 그것을 확장하는 적절한 방법에 대한보다 포괄적 인 워크 스루 (walk-through).

+0

이 질문에 대한 답변이 필요합니까? – Komengem

답변

1

아무런 답변이없는 것 같습니다.

내가하고 싶은 것을 완전히 이해하지 못한다면 기본 SimpleMembership을 수정/확장/사용자 정의하여 이메일 등록 메커니즘을 제공하거나 등록 중에 기본 역할을 할당 할 필요가 없습니다. AccountController 내부에서 수행됩니다. 예를 들어

, 여기 내가 사용하고 레지스터 방법 :

[HttpPost] 
    [AllowAnonymous] 
    [ValidateAntiForgeryToken] 
    public ActionResult Register(RegisterModel model) 
    { 
     if (ModelState.IsValid) //TODO Change this to use a worker to send emails. 
     { 
      // Check if email exists already before creating new user 
      using (UsersContext db = new UsersContext()) 
      { 
       UserProfile email = db.UserProfiles.FirstOrDefault(u => u.Email.ToLower() == model.Email.ToLower()); 
       UserProfile uName = 
        db.UserProfiles.FirstOrDefault(u => u.UserName.ToLower() == model.UserName.ToLower()); 

       // Attempt to register the user 
       try 
       { 
        if (email == null && uName == null && this.IsCaptchaVerify("Captcha is not valid")) 
        { 
         bool requireEmailConfirmation = !WebMail.SmtpServer.IsEmpty(); 
         string confirmationToken = WebSecurity.CreateUserAndAccount(model.UserName, model.Password, new 
         { 
          FirstName = model.FirstName, 
          LastName = model.LastName, 
          Email = model.Email        
         }, 
         requireEmailConfirmation); 
         if (requireEmailConfirmation) 
         { 
          EmailViewModel eml = new EmailViewModel 
                { 
                 ToEmail = model.Email, 
                 Subject = "Confirmez votre inscription", 
                 FirstName = model.FirstName, 
                 LastName = model.LastName, 
                 Body = confirmationToken 
                }; 

          UserMailer.ConfirmRegistration(eml).SendAsync(); 

          Response.Redirect("~/Account/Thanks");        
         } 
         else 
         { 
          WebSecurity.Login(model.UserName, model.Password); 
          Response.Redirect("~/"); 
         }       
        } 
        else 
        { 
         if (email != null) 
          ModelState.AddModelError("Email", "Email address already exists. Please enter a different email address."); 

         if (uName != null) 
          ModelState.AddModelError("UserName", "User Name already exists. Please enter a different user name."); 

         if (!this.IsCaptchaVerify("Captcha is not valid")) 
          TempData["ErrorMessage"] = "Captcha is not valid"; 
        } 

       } 
       catch (MembershipCreateUserException e) 
       { 
        ModelState.AddModelError("", ErrorCodeToString(e.StatusCode)); 
       } 
      } 
     } 

     // If we got this far, something failed, redisplay form 
     return View(model); 
    } 

여기에 할당 된 기본 역할이 없다,하지만 EmailConfirmation이 확인되면 쉽게 추가 할 수있을 것이다.

질문이 꽤 오래된 것처럼, 나는 그것이 누군가를 도왔 으면 좋겠다!

관련 문제