admin管理员组文章数量:1568304
1. 登录
1.1 javaweb中如何去维持登录状态
- 登录后信息放入 session中
- 页面内验证session中是否有登录信息
- 如果有,不需要再次登录
- 如果没有,跳转登录页面
- 如果登录后点击注销,删除session中登录信息,并清除页面缓存(必要的)
1.2 javaweb中哪些情况我们的session会过期
- 过期–>很长时间没有去访问网站
- 主动关闭–>用户注销
- 切换浏览器
1.3 手机端如何维持登录状态
通过sessionKey/tokenKey
登录协议
1.3.1 sessionKey/tokenKey哪里来?
登录成功之后,后台返回
1.3.2 sessionKey/tokenKey生成有什么规则?
后台返回的,按照一定规则生成的(比如可以随机数生成一个24位以上的字符串)
1.3.3 登录成功返回的sessionkey/tokenKey存到哪里?
保存到sp中就可以了
1.3.4 sessionkey/tokenKey使用场景
有些协议需要用到登录信息,就需要看登录状态,就需要用到sessionkey/tokenKey,比如支付协议
1.3.5 如何使用sessionkey/tokenKey?
需要登录状态,判断sp中是否有sessionkey/tokenKey?
- 有:那当前是已登录状态,就把个人信息和sessionkey/tokenKey上传到服务器;
- 没有:跳到登录界面,让用户登录
1.3.6 谁去判断sessionkey/tokenKey是否过期?
任何协议把sessionkey/tokenKey传到服务器.服务器会判断sessionkey/tokenKey是否过期?
- 过期:告知客户端,登录状态已过期,需要重新登录
- 未过期:可以使用当前的登录信息,继续走逻辑
1.3.7 为什么判断是否过期需要后台做?
因为前端可以修改当前时间?
1.3.8 sessionkey/tokenKey多久过期?
这个具体看公司
1.3.9 后台如何去判断sessionkey/tokenKey是否过期?
- 分配sessionkey/tokenKey的时候记录时间
- 判断是否存在对应的sessionKey:如果不存在,是不是直接就是无效.
- 某一时刻,用户判断sessionkey/tokenKey是否过期的时候,拿着当前时间和sessionkey/tokenKey分配时间做比较
- 大于指定时间:过期
- 没有大于指定时间:未过期
2. logindemo
public class MainActivity extends Activity {
private Button mLogin;
private SPUtil mSpUtil;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mLogin = (Button) findViewById(R.id.login);
mSpUtil = new SPUtil(MainActivity.this);
mLogin.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
new Thread(new Runnable() {
@Override
public void run() {
// TODO
try {
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpGet get = new HttpGet(
"http://mobileif.maizuo/user/login?"
+ "username=18682036558&"
+ "password=96e79218965eb72c92a549dd5a330112&"
+ "type=1&"
+ "userType=1&"
+ "appType=31&"
+ "agentID=0-maizuo&"
+ "loginType=1&"
+ "clientID=31&"
+ "channelID=31");
HttpResponse response = httpClient.execute(get);
if (response.getStatusLine().getStatusCode() == 200) {
HttpEntity entity = response.getEntity();
String result = EntityUtils.toString(entity);
System.out.println("result :" + result);
// 得到sessionKey保存到sp中
JSONObject jsonObject = new JSONObject(result);
String sessionKey = jsonObject.optString("sessionKey");
// 保存到sp中
mSpUtil.putString("sessionKey", sessionKey);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
});
findViewById(R.id.pay).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 这个地方需要使用sessionKey,对应的一般操作,首先判断是否存在
String spSessionKey = mSpUtil.getString("sessionKey", "");
if ("".equals(spSessionKey)) {
Toast.makeText(getApplicationContext(), "请先登录", 0).show();
return ;
}
//接着就是把对应的sessionKey和userid和payinfo上传给服务器
}
});
}
}
返回数据
3. 绘流程图说明sessionKey的使用
以确认支付协议为例
验证码登录/注册_简单流程
1、提交手机号 2、下发短信验证码 3、提交验证码
验证码后台过期逻辑
验证码登录/注册_流程描述
- 用户填写手机号,点击发送验证码,发送请求把手机号传到server
- server调用短信平台的接口知道发送内容,发送对象,完成短信的发送
- 用户收到短信,得到验证码,填写验证码,发送请求把手机号,验证码上传到server
- server判断我们的验证码是否正确,验证是否过期,根据不同的判断,返回不同的结果
share sdk 短信验证码理解
Android登录注册模块解决方案
原文链接:http://blog.csdn/wwj_748/article/details/50575642
几乎每个app都会有登录注册的功能,可以看看笔者开发的『南方周末新闻阅读器』,登录、手机注册、忘记密码这些入口,这些功能在app中要如何来实现呢?这个模块看似很简单,但要做好就需要考虑很多细节,比如对用户的输入的容错,操作的提示文案的设定,登录成功保存用户信息等等。
业务逻辑描述上一节的流程图已经很清晰的展现了登录注册的流程,这里继续用文字说明一下:
1. 点击进入个人中心或者需要用户登录状态的操作,先判断用户是否已经登录。
2. 如果已经登录,则继续后面的业务,否则,跳转到登录页面进行登录。
3. 如果已经有账号,则可以直接登录,或者可以直接选择第三方平台授权登录。
4. 如果未注册账号,则需要先进行账号注册,注册成功后再登录;也可以不注册账号,通过第三方平台授权进行登录。
5. 如果有账号,但忘记密码,则需要进行重置密码,否则直接登录。
具体实现登录可以使用账号登录,现在的app基本上都是手机号码登录,注册的时候也是一个手机对应一个账号,通过发送验证码进行验证;用户也可以选择第三方平台进行登录,一般会提供微信、QQ、新浪微博这样的主流社交平台进行授权登录,这里使用了友盟的SDK进行实现。
登录注册的解决方案,已经做成一个Demo,大家在实际开发的时候可以参考着根据自身的业务进行调整,但基本上不会差太多,第三方登录、验证码这个都可以选用第三方服务来实现
示例代码:LoginActivity.Java
package com.devilwwj.loginandregister;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.text.method.HideReturnsTransformationMethod;
import android.text.method.PasswordTransformationMethod;
import android.view.KeyEvent;
import android.view.View;
import android.view.inputmethod.EditorInfo;
import android.widget.TextView;
import android.widget.Toast;
import com.devilwwj.loginandregister.global.AppConstants;
import com.devilwwj.loginandregister.utils.LogUtils;
import com.devilwwj.loginandregister.utils.ProgressDialogUtils;
import com.devilwwj.loginandregister.utils.RegexUtils;
import com.devilwwj.loginandregister.utils.ShareUtils;
import com.devilwwj.loginandregister.utils.SpUtils;
import com.devilwwj.loginandregister.utils.ToastUtils;
import com.devilwwj.loginandregister.utils.Utils;
import com.devilwwj.loginandregister.views.CleanEditText;
import com.umeng.socialize.bean.SHARE_MEDIA;
import com.umeng.socialize.controller.UMServiceFactory;
import com.umeng.socialize.controller.UMSocialService;
import com.umeng.socialize.controller.listener.SocializeListeners.UMAuthListener;
版权声明:本文标题:登录和oauth机制 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1725633939a1034033.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论