2012-04-14 140 views
1

我想创建和Android应用程序,需要用户进行身份验证(通过REST Web服务)。该应用程序有多个活动和屏幕,都需要用户登录,登录时用户可以在网站上添加和编辑帖子。Android身份验证

我读过在“ConnectionManager”单身人士中使用AndroidHttp客户端是最好的方法。然而,我会在哪里存储用户的详细信息(用户名,密码),这将在单身?每次用户尝试编辑/添加内容时,我是否应该进行身份验证?

我应该有一个这样的类:

public class ConnectionManager { 

    private static ConnectionManager instance = null; 
    private AndroidHttpClient client; 

    private ConnectionManager() { 
     client = AndroidHttpClient.newInstance("Android-Connection-Manager"); 
    } 

    public static ConnectionManager getInstance() { 
     if(instance == null) { 
      instance = new ConnectionManager(); 
     } 
     return instance; 
    } 

    public void authenticate(String username, String password) { 
     //Check for authentication here 
    } 
} 

,并调用下面的代码每个用户做了一次:

private static ConnectionManager conn = ConnectionManager.getInstance(); 
conn.authenticate(); 

OR

我应该存储用户单身的细节

public class ConnectionManager { 

    private static ConnectionManager instance = null; 
    private AndroidHttpClient client; 

    private AppUser mLoggedInUser; 
    private boolean mAuthenticated; 

    private ConnectionManager() { 
     client = AndroidHttpClient.newInstance("Android-Connection-Manager"); 
    } 

    public static ConnectionManager getInstance() { 
     if(instance == null) { 
      instance = new ConnectionManager(); 
     } 
     return instance; 
    } 

    public void InitialiseUser(String username, String password) { 
      //Do login checks here then return true if logged in 
      mAuthenticated = true; 
    } 

    public boolean isAuthenticated() { 
      return mAuthenticated; 
    } 
} 

回答

2

如果您拥有Rest服务的控制权,则可以在初始连接上使用用户名\密码进行身份验证,然后在身份验证成功时将“令牌”返回给您的应用程序。

然后,您的应用程序可以将此令牌添加到所有未来请求的http标头中,并且您的服务可以在继续之前检查它是否有效。

这就是我的做法,它运作良好。

+0

这似乎是有道理的,这种方法是否安全?你知道如何实现这个目标的例子吗? – kiwijus 2012-04-14 15:26:51

+0

您需要使用SSL才能保证安全,但对于任何服务都是如此。我不知道任何记录的例子,但它并不困难。 – Kuffs 2012-04-14 15:47:29

+0

是的,我认为它可能会很好。我刚看了一下,看起来很简单。这只是在Android应用程序(HttpGet addheader)中添加标题然后在Web服务端检查它的问题?我不会错过任何我? – kiwijus 2012-04-14 15:50:02