ASP.NET Identity 구현 DB에서 사용자 정보 검색

ASP.NET Identity 구현 DB에서 사용자 정보 검색



ASP.NET Identity 로그인 기능 구현 의 계속.

데이터베이스에서 생성한 ADO.NET Entity Data Model을 사용하려면 어떻게 하면 좋을까 생각했으므로 구현해 보았다.
  • ASP.NET Identiy를 사용한 인증.
  • 인증을위한 사용자 테이블이 이미 있다고 가정한다.
  • MSSQL에 접속한다.


  • 단순히 로그인 화면에서 유저, 패스워드가 입력되면, 데이터베이스로부터 유저를 찾아내 패스워드와 일치하면 OWIN의 미들웨어에 등록(사인인)한다.

    여기서 나오는 HashPassword 는 문자열형이므로 ASP.NET Identity 로그인 기능 구현 에 기재한 IPasswordHasher 를 구현하거나 FindAsync 를 오버라이드(override) 해 패스워드 비교를 구현하지 않으면 로그인할 수 없다는 것에 주의.

    ADO.NET EntityDataModel 구현



    먼저 데이터베이스 기준 클래스( DbContext )를 구현한다.
    1. "새 항목"추가에서 ADO.NET EntityDataModel을 선택합니다.
    2. "데이터베이스에서 EF Designer"를 선택합니다.
    3. 연결 대상을 입력합니다.
    4. 사용할 테이블을 선택합니다.



    ADO.NET EntityDataModel을 디자이너에서 생성하면 다음 클래스가 생겼다.Models\Model1.Context.cs
    public partial class TESTDBEntities : DbContext
    {
        public TESTDBEntities()
            : base("name=TESTDBEntities")
        {
        }
    ・・・省略
        public virtual DbSet<userMst> userMsts { get; set; }
    }
    
    userMst는 사용자 정보의 정의를 포함하는 유형 클래스입니다.

    사용자 정보를 DB에서 가져오기


    TESTDBEntities를 사용하여 FindByNameAsync를 변경합니다.
    public class AppUserStore : IUserStore<AppUser>, IUserStore<AppUser, string>, IUserPasswordStore<AppUser, string>
    {
    ・・・省略
        public Task<AppUser> FindByNameAsync(string userName)
        {
          //ここでログインユーザ情報を見つけて返す処理。
          using (var db = new TESTDBEntities())
          {
              var dbUser = db.userMsts.FirstOrDefault(w => w.userName == userName);
              if (dbUser == null) return Task.FromResult(default(AppUser));
              // DBからユーザを見つけらAppUser型にして返す。
              var user = new AppUser
              {
                  Id = dbUser.userCd,
                  UserName = dbUser.userName,
                  HashPassword = dbUser.password
              };
              return Task.FromResult(user);
          }
        }
    }
    

    실행되면 데이터베이스의 사용자의 데이터베이스를 사용하여 로그인됩니다.
    이번에 DbContext를 사용했지만 DataSet이나 Link to sql에서도 같은 구현을 할 수 있을 것이다.

    좋은 웹페이지 즐겨찾기