このサンプルWebフォーム・アプリケーションは、Oracleデータベースからユーザーを認証するために、HEREの手順に従います。このアプリケーションは、認証されたユーザーのみがアクセスできる制限されたフォルダにRestrictedPage
を作成します。制限されたページにアクセスしようとする匿名ユーザーはLogin
ページにリダイレクトされます。また、認証されたユーザーがログアウトすると、そのアプリはDefault
ホームページにリダイレクトされます。
RestrictedPage.aspx:
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
<h1>Restricted Page</h1>
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False" DataKeyNames="EMPLOYEE_ID" DataSourceID="SqlDataSource1">
<Columns>
<asp:BoundField DataField="EMPLOYEE_ID" HeaderText="EMPLOYEE_ID" ReadOnly="True" SortExpression="EMPLOYEE_ID" />
<asp:BoundField DataField="FIRST_NAME" HeaderText="FIRST_NAME" SortExpression="FIRST_NAME" />
<asp:BoundField DataField="LAST_NAME" HeaderText="LAST_NAME" SortExpression="LAST_NAME" />
<asp:BoundField DataField="EMAIL" HeaderText="EMAIL" SortExpression="EMAIL" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>" SelectCommand="select employee_id, first_name, last_name, email from hr.employees where employee_id < 150"></asp:SqlDataSource>
</asp:Content>
Site.Master:のみdiv
関心を示します。残りは、VSプロジェクトテンプレートによって作成された標準的な定型マークアップです。
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a runat="server" href="~/">Home</a></li>
<li><a runat="server" href="~/About">About</a></li>
<li><a runat="server" href="~/Contact">Contact</a></li>
<li><a runat="server" href="~/Restricted/RestrictedPage">Restricted</a></li>
</ul>
<asp:LoginView runat="server" ViewStateMode="Disabled">
<AnonymousTemplate>
<ul class="nav navbar-nav navbar-right">
<li><a runat="server" href="~/Account/Register">Register</a></li>
<li><a runat="server" href="~/Account/Login">Log in</a></li>
</ul>
</AnonymousTemplate>
<LoggedInTemplate>
<ul class="nav navbar-nav navbar-right">
<li><a runat="server" href="~/Account/Manage" title="Manage your account">Hello, <%: Context.User.Identity.GetUserName() %> !</a></li>
<li>
<asp:LoginStatus runat="server" LogoutAction="Redirect" LogoutText="Log off" LogoutPageUrl="~/" OnLoggingOut="Unnamed_LoggingOut" />
</li>
</ul>
</LoggedInTemplate>
</asp:LoginView>
</div>
IdentityModels.cs:このメソッドは、対応するOracleスキーマテーブルにエンティティモデルを関連付ける/作成するために添加されます。
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");
}
のWeb.config:これはRestricted
フォルダのWeb設定ファイルです。
<?xml version="1.0"?>
<configuration>
<location path="RestrictedPage.aspx">
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>
</configuration>
のWeb.config:これらは、アプリケーションのルートフォルダにあるグローバルアプリケーション設定ファイルに行われた関心の追加です。
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=your_server_name;User ID=your_user_id;Password=xxxxxxxx;"
providerName="Oracle.ManagedDataAccess.Client" />
</connectionStrings>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="Oracle.ManagedDataAccess.Client"
type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework" />
</providers>
</entityFramework>
ここで参照する資料に記載されているスクリプトによって作成された必要なAspNet.Identity
テーブルを示すOracleデータベーススキーマです。
このアプリは、HEREからダウンロードすることができますOracleのサンプルHR
スキーマを使用しています。
これは、最も確実である...しかし、あなたはあなたのアプリケーションに関するいくつかのより多くの情報が含まれている場合、あなたはより良い答えを得るでしょう。例えば。どのバージョン、どのフレームワーク(MVC、WebApi、Webフォーム)、どのような認証を使用したいのですか –
もちろんです。しかし、このためには、asp.netで完全な認証機能を実装する必要があります。 jstreetによって投稿されたリンクはかなり役に立ちます –
アプリケーション私はプログラミングASP.NETです。データベースはOracleです。もちろん、最初のページはログインページです。ユーザー名とパスワードを入力します。しかし、それはあなたが探しているものですか?アプリケーションにアクセスする前にユーザー認証をチェックしたいと言っていますが、最初にログインするかどうかを確認する必要がありますか? @ ste-fuさんのように、より多くの情報を提供してください。 – user3454439