ASP。NETセッション自体は、トークンベースのセキュリティであるとはい、あなたは簡単に
[WebMethod(true)]
を実行していることを実現することが可能とはい、任意のWebメソッドは、それがセッショントークンを検証User.IsAuthenticatedを呼び出す必要があり、最初に行われるログインが必要です。
簡単にフォーム認証を実装できます(web.configを空にして、FormsAuthenticationをコードで使用できます)。例えば
、
[WebMethod(true)]
public string DoLogin(
string username,
string password)
{
//.. do your verification
FormsAuthentication.SetAuthCookie(username,false);
return "Login Sucessful";
}
[WebMethod(true)]
public string ChangePassword(
string oldPass,
string newPass)
{
// verify user is logged on or not..
if(!User.IsAuthenticated)
return "Please Login";
// The code below is secure, only
// authenticated user will go through below
// change pass...
return "Password Changed Successfully.";
}
は、我々は、多くのFlex + ASP.NETサイトを開発し、我々はまったく同じことをしましたが、代わりにリターンの「文字列」我々は通常
...次のようなクラスを返します
public class WSResult<T>{
public bool Successful;
public string Message;
public T Result;
public T[] Results;
}
メソッドが成功した場合、Success = trueが返され、アイテムの配列を返すか単一のアイテムだけを返すかによって結果または結果が返されます。エラーまたは未定義のアクセスがあった場合は、Successful = falseを設定し、Messageを詳細な文字列として設定できます。次の例に従います。
[WebMethod(true)]
public WSResult<BusinessUser> DoLogin(
string username,
string password)
{
try{
BusinessUser user = BusinessUser.GetByUsername(username);
if(user==null)
throw new Exception("User not found");
if(user.Password != password)
throw new Exception("Password did not match");
return new WSResult<BusinessUser>{ Result=user };
}catch(Exception ex)
{
// this will even catch any DAL exceptions or any system error as well
// Log Exception... somewhere for tracking...
return new WSResult<BusinessUser>{ Successful=false, Message = ex.Message };
}
}
Akashに感謝します。オブジェクト直列化をどうやって処理しますか? –
純粋なSOAP 1.2 XML Webサービスを使用しているため、すべてがxml形式で正しくシリアル化され、Flex BuilderではWSDLを簡単にインポートでき、型は正しくシリアル化されます。 WSResultは、フレックスでWSResultOfInt64としてシリアル化され、結果として生成されるタイプジェネリックも同様に出力できます。 XMLシリアライゼーションはコストがかかりませんが、ほとんどの場合、[XmlAttribute]を使用してネットワークトラフィックを削減しています。 –
もう1つの点は、Http HandlersはJSON実装などを書くのに時間がかかり、大規模なプロジェクトでは時間がかかることです。それだけでなく、エラー処理はもう一つの痛みです。純粋なASP.NET SOAP Webサービスは非常に安定していて、より速く書くことができます。 –