私はデータベースサーバーとトランザクションを行うDLLプロジェクトを開発していますが、唯一の問題は理想的なDLLでなければならず、以前に見つからなかった場合はログイン画面を要求する必要があることです情報。このログイン画面は、Windowsアプリケーションと同様に、C#で記述する必要があります。dll C#プロジェクトのログインウィンドウ
非常に賢明なアイディアです。事前
私はデータベースサーバーとトランザクションを行うDLLプロジェクトを開発していますが、唯一の問題は理想的なDLLでなければならず、以前に見つからなかった場合はログイン画面を要求する必要があることです情報。このログイン画面は、Windowsアプリケーションと同様に、C#で記述する必要があります。dll C#プロジェクトのログインウィンドウ
非常に賢明なアイディアです。事前
で
おかげでこれは通常、DLLに置くものの一種ではありません。ログイン画面は実装UIに依存します。プロパティとして実装する必要があるログイン資格情報を持つインターフェイスを実装するデータアクセスクラスを作成する方がよいでしょう。忠実インタフェースを使用して
public interface IMyDataInterface
{
string loginUser { get; set; }
string loginPW { get; set; }
}
public class MyDataLayer : IMyDataInterface
{
public MyDataLayer(string login, string pw)
{
loginUser = login;
loginPW = pw;
}
}
露出しdatalayerがために同じ実装の基礎を持っていることを保証:これは、任意のかかるアプリケーション(ウェブ、リサイズ、WPF、何でも)ログイン画面を作成したり、データクラスへの直接の資格情報を渡すができます使いやすいアプリケーションです。
を編集し、より安全な方法を反映する:コンストラクタは、資格情報を提供する複数の方法を含むようにオーバーロードすることができるが、SecureStringクラスを含むために使用されるべきである(@クリスによって着想)
using System.Net;
public interface IMyDataInterface
{
NetworkCredential credentials { get; set; }
}
public class MyDataLayer : IMyDataInterface
{
public MyDataLayer(NetworkCredential loginInfo)
{
credentials = loginInfo;
}
}
をパスワードはすべての通話で使用できます。
ちょうどお勧めです:ユーザー名とパスワードの文字列の代わりにNetworkCredential型のプロパティを使用してください。 NetworkCredentialクラスはパスワードを内部的にSecureStringとして保存するため、デフォルトではより安全で、認証が必要な多くの内部.NETクラスでも使用されます。 – Chris
@Chris - それは実際には非常に良いアイデアです。それを反映するように編集します。 –