0

ASP.netでフォーム認証を使用します。ユーザーは私のプロジェクトのデータベースにいます。私のコードは下にありますが、これらのコードは機能しません(ユーザーはログインできません)。ユーザーは「ニュース」データベースの「ユーザー」テーブルにあります。 私のweb.configファイル:ログイン用のsqlserverのユーザー用にAsp.netフォーム認証

<configuration> 
    <system.web> 
    <authentication mode="Forms"> 
     <forms loginUrl="default.aspx" name=".asp" path="/" timeout="1" > 
     </forms> 
    </authentication> 
    <authorization> 
    <allow users="*"/> 
    </authorization> 
    <compilation debug="true" targetFramework="4.0"/> 
    <membership> 
     <providers> 
     <clear/> 
     <add name="MySqlMembershipProvider" 
      connectionStringName="news" 
      applicationName="users" 
      type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 
     </providers> 
    </membership> 

    </system.web> 
    <appSettings/> 
    <connectionStrings> 
    <add name="news" connectionString="Data Source=Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\ava\Desktop\WebSite3\App_Data\news.mdf;Integrated Security=True;User Instance=True" 
    providerName="System.Data.SqlClient" /> 
    </connectionStrings> 

    <location path="karbar.aspx"> 
    <system.web> 
     <authorization> 
     <deny users="?" /> 
     </authorization> 
    </system.web> 
    </location> 
</configuration> 

とのdefault.aspxの形で私のコードは次のとおりです。

> protected void Button1_Click(object sender, EventArgs e) { 
>  if (FormsAuthentication.Authenticate(user.Text, pass.Text)) 
>  { 
>   FormsAuthentication.SetAuthCookie(user.Text, true); 
>   FormsAuthentication.RedirectFromLoginPage(pass.Text, true); 
>  } 
>  else 
>   user.Text = ":((((((("; } 
+0

'Web.Config'に' news'という名前の接続文字列がありますか? – Eranga

+1

右のように、name = "ConnectionString"はname = "news"とする必要があります。 –

+0

はい、あります。タグ –

答えて

0

FormsAuthentication.RedirectFromLoginPage(pass.Text, true); 

<membership> 
    <providers> 
    <clear/> 
    <add name="MySqlMembershipProvider" 
     connectionStringName="ConnectionString" 
     applicationName="users" 
     type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 
    </providers> 
</membership> 

</system.web> 

<appSettings/> 
<connectionStrings> 
    <add name="ConnectionString" connectionString="Data Source=Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\ava\Desktop\WebSite3\App_Data\news.mdf;Integrated Security=True;User Instance=True" 
    providerName="System.Data.SqlClient" /> 
</connectionStrings> 

更新 私はあなたを願っていますあなたのコードにも問題があります更新

if (Membership.ValidateUser(user.Text, pass.Text)) 
{ 
    FormsAuthentication.SetAuthCookie(user.Text, true); 
    FormsAuthentication.RedirectFromLoginPage(user.Text, true); 
} 
のように変更します。あなたがあなた自身のデータベースに会員

<configuration> 
    <system.web> 
<authentication mode="Forms"> 
    <forms loginUrl="default.aspx" name=".asp" path="/" timeout="1" > 
    </forms> 
</authentication> 
<authorization> 
<allow users="*"/> 
</authorization> 
<compilation debug="true" targetFramework="4.0"/> 

<connectionStrings> 
<add name="news" connectionString="Data Source=Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\ava\Desktop\WebSite3\App_Data\news.mdf;Integrated Security=True;User Instance=True" 
providerName="System.Data.SqlClient" /> 
</connectionStrings> 
<location path="karbar.aspx"> 
    <system.web> 
    <authorization> 
    <deny users="?" /> 
    </authorization> 
</system.web> 

のための必要性を全く使用していないしているのですべて一緒<membership>タグを削除を参照してください。

は、コードで背後のデータベースからユーザー・レコードが今すぐあなたのテーブル名を使用して、私はあなたが何をすべきか知っている期待してるのDataReader

protected void Button1_Click(object sender, EventArgs e) { 
     //assume you opened the db 

SqlCommand cmd=new SqlCommand(); 
    cmd.CommandText="select * from users where [email protected] and [email protected]"; 
    cmd.Connection=conn; 
    cmd.Parameters.AddWithValue("name",user.Text); 
    cmd.Parameters.AddWithValue("pass",pass.Text); 
SqlDataReader dr=cmd.ExecuteReader(); 
if (dr.HasRows) 
{ 
    FormsAuthentication.SetAuthCookie(user.Text, true); 
    FormsAuthentication.RedirectFromLoginPage(user.Text, true); 
} 
else labelerror.Text="Incorrect name or pass"; 
} 

に結果を入れてください。あなたは1つのWebフォームでkarbar.aspxを保護していることを忘れないでください。

+0

私はこれを行います。ユーザーは全くログインできません –

+0

私の更新を確認してください – Mubarek

+0

私はチェックしました。しかし、うまくいきません –

0

2つのこと:コメントで言及した他の人のよう

  1. 、作ります接続名がのニュースではなく、<connectionStrings>の要素であることを確認してください。

  2. データベースには、aspnet_regsql.exeを実行して、一連の特殊なタルブ+ビュー+フォーム認証のSPが必要です。これらのテーブルは、ASP.NETの認証/メンバーシップ/ロールプロバイダによって内部的に管理されます。次のタグで

+0

私のデータベースにはユーザーとパスの2つの列を持つユーザー表があります。 1つのレコードがあります –

+0

私のための他の方法はありますか? –

0

<forms loginUrl="default.aspx" name=".[CookieName]" path="/" timeout="1" > 

nameプロパティであなたのクッキーの名前を入れてください。

また

- >でsecondeパラメータを変更します。あなたの設定ファイルは、この方法を更新し

FormsAuthentication.RedirectFromLoginPage(pass.Text, false); 
関連する問題