ASP.NET Identity 구현 DB에서 사용자 정보 검색
ASP.NET Identity 구현 DB에서 사용자 정보 검색
ASP.NET Identity 로그인 기능 구현 의 계속.
데이터베이스에서 생성한 ADO.NET Entity Data Model을 사용하려면 어떻게 하면 좋을까 생각했으므로 구현해 보았다.
단순히 로그인 화면에서 유저, 패스워드가 입력되면, 데이터베이스로부터 유저를 찾아내 패스워드와 일치하면 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에서도 같은 구현을 할 수 있을 것이다.
Reference
이 문제에 관하여(ASP.NET Identity 구현 DB에서 사용자 정보 검색), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Sa_Ru/items/632330ab50e3b60242c6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)