我有一个需要来自服务器的身份验证的应用程序。每次尝试从该服务器获取服务时,我都应该使用扩展 Authenticator Class的类来设置此代码。
Authenticator.setDefault(new UserAuthenticator("my_mail", "my_password"));
这是 UserAuthenticator 类:
import java.net.Authenticator;
import java.net.PasswordAuthentication;
import android.util.Log;
public class UserAuthenticator extends Authenticator
{
//counter used to iterate login process
private int redirect;
private String email;
private String password;
/**
* UserAuthenticator constructor
*/
public UserAuthenticator(String mail, String pwd)
{
this.email = mail;
this.password = pwd;
Log.d("email+password", email+password);
}
/**
* <p>Called when password authorization is needed</p>
*
*/
@Override
protected PasswordAuthentication getPasswordAuthentication()
{
//to catch login redirect exception
if(redirect>0){
return null;
}else{
redirect ++;
}
/**
* <p>Return the information (a data holder that is used by
* Authenticator</p
*/
return new PasswordAuthentication(email,
password.toCharArray());
}
public PasswordAuthentication authenticationResult()
{
return getPasswordAuthentication();
}
}
有没有办法只实例化这个类一次,然后在所有其他活动中使用(用户保持身份验证)。
我的意思是我想对用户进行一次身份验证,并且每次我需要请求服务器时都不要重复该类的实例化。
ps:我试图让它成为一个静态的内部类,但是每次都实例化它是行不通的。也许在 Android 中还有其他方式而不是 Authenticator 类,因为我在 Java Web 应用程序中知道这个类。