我们有一个可以通过浏览器访问的Web应用程序,现在我们为应用程序创建一个Android应用程序,然后他们应该共享相同的后端。
对于身份验证,通常浏览器会(或可能)将用户信息保存在cookie中,并通过每个 http(s)请求将cookie发送到服务器,然后是服务器会相应地将内容放在页面中。
现在对于Android中的应用程序,我不知道如何制作它。我不是指如何将身份验证请求发送到服务器,对于此问题,我可以参考this post。
我感到困惑的是,一旦我将用户ID和密码发送到服务器并获得成功的响应,下一个请求怎么样?我应该将经过身份验证的用户信息绑定到服务器的每个请求,就像浏览器那样,或者我只是将authenticated=true|false
这样的标记保存到首选项中?
我希望有人可以提供一些建议。
也许我不够清楚自己。我会举一个例子。
假设我有一个Web应用程序,其页面名为" followers.jsp"这将显示当前签名用户的关注者。通常,我们进行身份验证从数据库中获取关注者,然后将其弹出到以下页面:
followers.jsp:
User u=Session.get("user");
if(u==null){
//no authenticated redirect to login page
}else{
List followersList=getFollowers(u);
requset.setAttribute("followers",followersList);
}
然后直接渲染jsp页面。
现在我们为我们的产品创建一个Android应用程序,然后当用户使用我们的应用程序时,他将登录并查看他的粉丝,此时,我们必须创建一个进行身份验证的Web服务并返回数据,然后应用程序将呈现它们。 Web服务可能如下所示:
API / getFollowers.xx
User u= // here we must get something to identify a user from the request information maybe a token or something else?
List followersList=getFollowers(u);
return toJson(followersList);
现在我们发现我们的" followers.jsp"页面和我们的服务将执行相同的工作(身份验证,读取数据库,返回数据),然后为什么不使用Web服务,因为我们可以使用ajax,这将提供更好的用户体验来获取和呈现数据" followers.jsp"?
如果是这样,如何为pc和android客户端建立统一的身份验证机制?
答案 0 :(得分:-1)
如果网站要求对每个请求进行身份验证,那么您需要发送身份验证数据。如果它没有,那么我首先从网络或安卓上看不到认证的重点,因为任何人都可以发送请求并在没有任何凭据的情况下获得响应。如果您不想每次都发送密码,您可以创建并发送临时身份验证令牌,但这需要对Web服务进行一些更改。