ISAPI认证过滤器,比较难
win2000,IIS(验证设置为基本验证)
我试图控制只允许用户名为"test"的用户可以访问web,禁止匿名与用户名错误,代码如下
//funcLog函数为写文件函数,用于调试
运行后,通过文件记录,已能判别出用户名是否正确,
但现在的问题是,即使正确也不能访问,这是为何???
DWORD CTestFilter::OnAuthentication(CHttpFilterContext* pCtxt,
PHTTP_FILTER_AUTHENT pAuthent)
{
char szBuff[100];
if(!*pAuthent->pszUser){
sprintf(szBuff, "Anonymous user login\n");
funcLog(LOG_FILE, szBuff);
SetLastError(ERROR_ACCESS_DENIED);
return SF_STATUS_REQ_ERROR;
}
if(strcmp(pAuthent->pszUser, "test") == 0){
sprintf(szBuff, "Valid User/Password: %s/%s\n",
pAuthent->pszUser, pAuthent->pszPassword);
funcLog(LOG_FILE, szBuff);
}else{
sprintf(szBuff, "Error User/Password: %s/%s\n",
pAuthent->pszUser, pAuthent->pszPassword);
funcLog(LOG_FILE, szBuff);
SetLastError(ERROR_ACCESS_DENIED);
return SF_STATUS_REQ_ERROR;
}
return SF_STATUS_REQ_NEXT_NOTIFICATION;;
}
问题点数:100、回复次数:3Top
1 楼YP2002CN(混世阿呆)回复于 2002-10-22 11:38:11 得分 100
幫你Up吧Top
2 楼memset(一脸茫然)回复于 2002-10-22 15:34:10 得分 0
helpTop
3 楼shines(郭子)回复于 2002-12-26 00:01:48 得分 0
倒,这不是明摆着的吗?
if(strcmp(pAuthent->pszUser, "test") == 0){
//这里是user不等于"test"的
}
else {
//这里是user等于"test"的,你却显示错误,并且返回SF_STATUS_REQ_ERROR,这不是明摆着的吗?耍我们
spintf(szBuff, "Error User/Password: %s/%s\n", pAuthent->pszUser, pAuthent->pszPassword);
funcLog(LOG_FILE, szBuff);
SetLastError(ERROR_ACCESS_DENIED);
return SF_STATUS_REQ_ERROR;
}
强烈怀疑楼主在倒分!Top




