c ++ - JNI Call for at godkende bruger ved hjælp af LogonUser?

Indlæg af Hanne Mølgaard Plasc

Problem



C ++ noob her wonding hvordan jeg kan godkende en Windows-bruger via Java servlet.


Her er koden jeg har sammensat for at tage et JNI-opkald fra min java servlet med brugerens brugernavn og password:


#include <stdio.h>
#include <string.h>
#include <sys/stat.h>
#include <stdlib.h> 

#include "Validate.h"    

JNIEXPORT jstring JNICALL Java\_Validate\_takeInfo(JNIEnv *env, jobject obj, jstring domain, jstring id, jstring idca, jstring password) 
{
    const char *nt\_domain;
    const char *nt\_id;
    const char *nt\_idca;
    const char *nt\_password;

    nt\_domain = env->GetStringUTFChars(domain, NULL);
    nt\_id = env->GetStringUTFChars(id, NULL);
    nt\_idca= env->GetStringUTFChars(idca, NULL);
    nt\_password = env->GetStringUTFChars(password, NULL);

    handle hToken = 0;
    char *otherString;
    otherString = LogonUser(nt\_id, nt\_domain, nt\_password, LOGON32\_LOGON\_NETWORK, LOGON32\_PROVIDER\_DEFAULT, &hToken );

    jstring newString = env->NewStringUTF((const char*)otherString);
    return newString;
}


Jeg får disse fejl, når jeg forsøger at kompilere:


D:JNIValidate.cpp(21) : error C2065: 'handle' : undeclared identifier
D:JNIValidate.cpp(21) : error C2146: syntax error : missing ';' before
ier 'hToken'
D:JNIValidate.cpp(21) : error C2065: 'hToken' : undeclared identifier
D:JNIValidate.cpp(24) : error C2065: 'LOGON32\_LOGON\_NETWORK' : undeclar
tifier
D:JNIValidate.cpp(24) : error C2065: 'LOGON32\_PROVIDER\_DEFAULT' : undec
dentifier
D:JNIValidate.cpp(24) : error C3861: 'LogonUser': identifier not found


Jeg går ud fra, at jeg ikke inkluderer noget, jeg har brug for. Enhver hjælp er meget værdsat.

Bedste reference


At din compiler ikke kunne finde LogonUser foreslår, at du 'mangler vinduets overskrifter. Inkluder windows.h


Også den generiske Windows håndtag type er stavet HANDLE, alle i caps.


Se LogonUser docs for flere detaljer. [4]