【问题标题】:Android Authentication安卓认证
【发布时间】:2012-04-14 15:10:42
【问题描述】:

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

我已经读过,在“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();

我应该将用户详细信息存储在单例中吗

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;
    }
}

【问题讨论】:

    标签: android web-services authentication rest login


    【解决方案1】:

    如果您可以控制 Rest Service,则可以在初始连接时使用用户名\密码进行身份验证,然后在身份验证成功时向您的应用返回一个“令牌”。

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

    我就是这样做的,效果很好。

    【讨论】:

    • 这似乎有道理,这种方法安全吗?您知道如何实现这一目标的任何示例吗?
    • 您需要使用 SSL 以确保安全,但对于任何服务都是如此。我不知道任何记录在案的例子,但这并不难。
    • 是的,我认为这可能会很好。我刚刚看了一眼,看起来确实很简单。只需在 android 应用程序 (HttpGet addheader) 中添加标头,然后在 Web 服务端检查它,对吗?我没有错过任何东西吗?
    • 这几乎就是我所做的一切。如果您愿意,也可以在查询字符串中传递令牌。
    • 晚了 2 年,但有人介意分享一些关于我如何做到这一点的代码吗?我正在编写的 Android 应用程序也有同样的问题。我的问题在这里>>stackoverflow.com/questions/26559660/…
    猜你喜欢
    • 2018-07-02
    • 1970-01-01
    • 2011-05-11
    • 2017-03-11
    • 1970-01-01
    • 2017-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多