我正在開發webservices。我想維護狀態信息,以便所有WebMethods都可以在登錄後才能訪問。 我已經嘗試,但得到問題。 我附上我的代碼。 任何其他選擇也將受到歡迎。執行網絡服務之間的授權/驗證
[
WebService的(命名空間= 「http://amSubfah.org/」)]
[
WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
//爲了允許這種Web服務從腳本調用,使用ASP.NET AJAX,取消註釋以下行。
// [System.Web.Script.Services.ScriptService]
公共
類登錄:System.Web.Services.WebService {
消息msgObj =新的Message();
BaseClass b = new BaseClass();
PasswordEncryptionDecryption pedObj = new PasswordEncryptionDecryption();
public AuthHeader Authentication = new AuthHeader();
公共登錄(){
//取消對以下行,如果使用設計的部件
的// InitializeComponent();
}
[
SOAPHEADER( 「驗證」,必需=真)]
[System.Web.Services。
的WebMethod(EnableSession =真)]
公共字符串checkUserLogin(字符串用戶,串PWD)
{
數據集dsLogin =新的DataSet();
List sqlParams = new List();
SqlParameter sqlParam1 = new SqlParameter(「@ UserName」,SqlDbType.NVarChar);
sqlParam1.Value = user;
sqlParams。加入(sqlParam1);
SqlParameter sqlParam2 = new SqlParameter(「@ Password」,SqlDbType.NVarChar);
string pass = pedObj.encryptPassword(pwd);
sqlParam2.Value = pass;
sqlParams.Add(sqlParam2);
嘗試
{
b.initializeDBConnection();
dsLogin = b.execSelectLoginQuery(
Query.strSelectLoginData,sqlParams);
}
趕上(SQLEXCEPTION sqlEx)
{
字符串str = msgObj.msgErrorMessage + sqlEx.Message + sqlEx.StackTrace;
}
{如果((dsLogin!= NULL)& &(dsLogin.Tables [0] .Rows.Count!= 0))
{
會話[
「用戶名」] =用戶;
string sessionId = System.Guid.NewGuid()。ToString();
Authentication.sessionId = sessionId;
Authentication.Username = user;
return msgObj.msgLoginSuccess;
}
其他
回報msgObj .msgLoginFail;
}
//的webmethod登記
[
SOAPHEADER( 「驗證」,必需=真)]
[系統名.web。服務。
的WebMethod(EnableSession =真)]
公共字符串insertRegistrationDetails(串FNAME,串L-NAME,電子郵件串,串PWD)
{
//串U =會話[ 「用戶名」 ]的ToString();
//如果(U == 「」)
// {
// // checkUserLogin(FNAME,PWD);
//返回「請先登錄」;
//}
如果(Authentication.Username == NULL || Authentication.sessionId == NULL)
{
回報 「請先登錄」;
}
List sqlParams = new List();
int insert = 0;
string msg =「」;
SqlParameter sqlParam = new SqlParameter(「@ FName」,SqlDbType.NVarChar);
sqlParam.Value = fName;
sqlParam.Size = 50;
sqlParams.Add(sqlParam);
SqlParameter sqlParam1 = new SqlParameter(「@ LName」,SqlDbType.NVarChar);
sqlParam1.Value = lName;
sqlParam1.Size = 50;
sqlParams.Add(sqlParam1);
SqlParameter sqlParam5 = new SqlParameter(「@ Email」,SqlDbType.NVarChar);
sqlParam5.Value = email;
sqlParam5.Size = 50;
sqlParams.Add(sqlParam5);
SqlParameter sqlParam7 = new SqlParameter(「@ Password」,SqlDbType.NVarChar);
sqlParam7.Value = pedObj .encryptPassword(pwd);
sqlParam7.Size = 50;
sqlParams。加入(sqlParam7);
嘗試
{
b.initializeDBConnection();
插入= b.execByKeyParams(
Query.strInsertIntoRegistrationTable1,sqlParams);
如果(插入!= 0)
{
MSG = msgObj .msgRecInsertedSuccess;
}
}
趕上(SQLEXCEPTION sqlEx)
{
字符串str = msgObj.msgErrorMessage + sqlEx.Message + sqlEx.StackTrace;
}
return msg;
}
公共類AuthHeader:SOAPHEADER
{
公共字符串用戶名;
public string sessionId;
}
}