0

我有一个需要来自服务器的身份验证的应用程序。每次尝试从该服务器获取服务时,我都应该使用扩展 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 应用程序中知道这个类。

4

0 回答 0