ASP.NET MVC5 - Oracle Database에 사용자 유지
ASP를 작성한 후.NET MVC5 프로젝트(목표 프레임워크 포함).NET 4.5.1이며 인증 유형은 개별 사용자 계정)인데, 사용자, 클레임, 역할 등을 Oracle 12c 데이터베이스에 유지할 수 있도록 프로젝트를 구성하는 가장 우아한 방법은 무엇입니까?즉, 자동으로 생성된 MVC5 프로젝트 구조를 변형시키지 않고 인증/인증 데이터를 Oracle에 보관할 수 있는 방법이 무엇입니까?
내 생각엔, 내 생각엔.<defaultConnection>
태그가 충분하지 않으며 대체할 다른 Oracle 구현이 있어야 합니다.Microsoft.AspNet.Identity.EntityFramework
. 템플릿 프로젝트가 VisualStudio에 의해 생성되는 경우(즉, 프로젝트에 어떤 참조를 추가해야 하는지, Web.config 파일을 어떤 방식으로 배열해야 하는지) 처음부터 단계적으로 수행할 사항을 알려주는 답변을 수집하면 매우 도움이 될 것입니다.Oracle 테이블의 이름을 AspNetUsers, AspNetClaims 등으로 엄격히 지정해야 합니까 아니면 이미 존재하는 테이블 이름을 코드 측에 주입해도 됩니까?)
참고: Devart의 dotConnect for Oracle은 무료 제품이 아니기 때문에 제 범위에서 제외됩니다.데이터베이스 액세스 및 엔티티 프레임워크 사용을 위해 Oracle ManagedDataAccess를 사용하지만 ASP를 사용합니다.Oracle 데이터베이스를 사용하는 NET Identity 2 + EntityFramework 6 로직(클래식 MVC5 프로젝트의 구조를 크게 변경하지 않고)은 저에게 좌절감을 주었습니다.
고객님께는 조금 늦게 도착할 수도 있지만, 혹시 다른 분들도 같은 문제가 발생할 경우를 대비해서 남겨두겠습니다.그래서 Identity 2.0과 Oracle이 함께 작동할 수 있게 되었습니다.기본 IdentityUser를 변경하지 않고(예: int 또는 long이 아닌 char ID를 사용해도 상관없는 경우) 기존 Oracle 스키마의 테이블만 원하는 경우 다음 단계를 수행합니다.
Oracle에서 ID 테이블을 만듭니다.원하는 경우 테이블 이름을 변경할 수 있으며, ID 작업에 필요한 열을 포함해야 합니다.응용 프로그램에 필요한 추가 열을 추가할 수도 있습니다(원래 Devart에서 볼 수 있는 스크립트로 URL이 깨질 경우를 대비하여 mist에 복사했습니다).
여기에 요지
EDMX 파일을 사용하는 경우 자동으로 생성되는 연결 문자열이 작동하지 않으므로 표준 연결 문자열을 추가해야 합니다.다음 템플릿을 따라 시도해 보십시오.
<add name="IdentityContext" connectionString="Data Source=localhost:1521/xe;PASSWORD=password;USER ID=username;" providerName="Oracle.ManagedDataAccess.Client" />
ApplicationDbContext에 새 연결 문자열을 사용하도록 지시
public ApplicationDbContext() : base("IdentityContext", throwIfV1Schema: false) { }
Identity에 기존 스키마와 테이블을 사용하도록 지시합니다.IdentityModels.cs 에 있는 ApplicationDbContext 정의 안에 이 메서드를 추가합니다.
protected override void OnModelCreating(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); // MUST go first. modelBuilder.HasDefaultSchema("YOUR_SCHEMA"); // Use uppercase! modelBuilder.Entity<ApplicationUser>().ToTable("AspNetUsers"); modelBuilder.Entity<IdentityRole>().ToTable("AspNetRoles"); modelBuilder.Entity<IdentityUserRole>().ToTable("AspNetUserRoles"); modelBuilder.Entity<IdentityUserClaim>().ToTable("AspNetUserClaims"); modelBuilder.Entity<IdentityUserLogin>().ToTable("AspNetUserLogins"); }
재건하라, 그것으로 끝!
그게 당신에게 도움이 된다면 저에게 알려주세요!
Andres Bejarano는 나에게 아주 잘 해주었지만, 나는 나에게 많은 시간을 절약해 줄 수 있는 무언가를 추가하고 싶습니다.먼저 Oracle을 사용하여 데이터베이스에 연결할 수 있는지 확인합니다.관리되는 데이터 액세스.클라이언트(TNS 이름 파일에 문제가 있었습니다. Oracle Connection 참조)ORA-12541 TNS 청취자 없음)를 던지는 중입니다.
둘째, 사용자를 등록하려고 할 때 다음 오류가 발생했습니다.
ADO에 대한 엔티티 프레임워크 제공자를 찾을 수 없습니다.불변 이름이 'Oracle'인 NET 공급자입니다.관리되는 데이터 액세스.고객님.공급자가 애플리케이션 구성 파일의 'entityFramework' 섹션에 등록되어 있는지 확인합니다.자세한 내용은 http://go.microsoft.com/fwlink/ ?LinkId=260882를 참조하십시오.
이는 올바른 Nuget 패키지가 모두 설치되어 있지 않거나 웹.config를 망쳤기 때문입니다.
ODAC가 http://www.oracle.com/technetwork/topics/dotnet/downloads/index.html 에 설치되어 있는지 확인합니다.
다음 Nuget 패키지를 순서대로 제거/재설치하면 됩니다.다음 오류를 해결해야 합니다.
- Oracle 설치 제거-패키지를 제거합니다.관리되는 데이터 액세스.엔터티 프레임워크
- Oracle 설치 제거-패키지를 제거합니다.관리 데이터 액세스
- Uninstall-Package 엔티티 프레임워크 버전 6.1.1
- IMT2000 3GPP - 설치-패키지 엔티티 프레임워크 - 버전 6.1.1
- 설치-패키지 오라클.관리 데이터 액세스
- 설치-패키지 오라클.관리되는 데이터 액세스.엔터티 프레임워크
네, 오래된 질문이지만 저는 이것에 대해 몇 가지 말하는 것이 유용하다고 생각합니다.Andres Bejarano의 답변은 저에게 효과가 있었지만 dll Version에 대해서는 몇 가지가 있습니다.Entity Framework 6 On VS 2015의 경우 MVC 프로젝트에 다음 dll에 대한 참조가 추가되었습니다.
- Oracle.DataAccess.엔티티 프레임워크 6.121.2.0
- Oracle.ManagedDataAccess 4.121.2.0
- Oracle.managedDataAccess.엔티티 프레임워크 6.121.2.0.
이 후 web.config 파일에 다음과 같이 올바른 구성을 작성해야 합니다.
Configuration(구성) 태그 끝에 다음을 추가합니다.
<system.data>
<DbProviderFactories>
<remove invariant="Oracle.ManagedDataAccess.Client" />
<add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</DbProviderFactories> </system.data>
공급자 섹션에서 다음을 추가합니다.
<provider invariantName="Oracle.ManagedDataAccess.Client" type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
물론 연결 문자열 섹션에서는 다음과 같은 오라클용 연결 문자열을 넣어야 합니다.
<add name="IdentityContext" connectionString="Data Source=YOURDB;User Id=YOURUSER;Password=YOURPASSWORD;"
providerName="Oracle.ManagedDataAccess.Client" />
안드레스 베조라노가 말한 변화는 누겟을 건들지 않고 저에게 효과가 있었습니다.
직접 실행할 수 있습니다.그건 불가능하지 않다.누군가가 여기저기서 해냈습니다.상황이 좀 달라질 수도 있습니다.
저는 AspNet을 구현했습니다.nhibernate에 대한 ID와 엔티티 프레임워크에 대한 언급이 없습니다.코드를 보여줄 수는 없지만 기본적으로 다른 사람들이 레이븐Db, 대퍼 또는 하이버네이트에서 한 일을 따라왔습니다.
다음 사항을 구현해야 합니다.
- 사용자(Microsoft).AspNet.신원.아이유서),
- 역할(Microsoft).AspNet.신원.IRole)
- UserStore(마이크로소프트).AspNet.신원.아이유서스토어)
- 사용자 관리자(Microsoft).AspNet.신원.사용자 관리자)
- RolesStore(마이크로소프트).AspNet.신원.IRoleStore)
- 역할 관리자(Microsoft).AspNet.신원.역할 관리자)
언급URL : https://stackoverflow.com/questions/28878718/asp-net-mvc5-keeping-users-in-oracle-database
'code' 카테고리의 다른 글
pom.xml에서 목표 지정 (0) | 2023.11.04 |
---|---|
레코드에서 HTML 태그 제거 (0) | 2023.11.04 |
Python Requests 라이브러리에서 기본 HTTP 인증을 사용하려면 어떻게 해야 합니까? (0) | 2023.10.30 |
angular2에서 타이머를 만드는 방법 (0) | 2023.10.30 |
코드 점화기에서 mysql AND OR 쿼리 결합 (0) | 2023.10.30 |