Java大白話–Token入門事例(demoダウンロード付)
16797 ワード
Java大白話–Token入門事例
Token入門事例今日はTokenの基本原理をご紹介します(最も率直な方法で)
同じ鍵2枚
これは不思議なホテルで、すべての客室に鍵の穴がありませんが、どの部屋にも鍵職人がいます.
この革命的なホテルの安全管理方式はこうです.
お客様はロビーに来て、フロントに口座番号とパスワードを教えて、フロントは彼に鍵をあげました.
彼は鍵を持って部屋の前に来て、鍵職人は彼の名前を聞いて、すぐに鍵を作って、フロントの鍵と比較して、一致すれば、ユーザーはドアに入ることができます.
これから、このホテルはユーザーアカウント情報を保存する必要のないホテルになりました!
以上が基本概念です
基本的な技術実現ルートについてお話しします.
1.ユーザーはログインページにアカウントパスワードを入力し、提出後、javaバックグラウンドで検証を行い、正しい場合はtokenトークンを作成する
具体的な制作過程:
渡された値を1つ暗号化すればtokenトークンとして作成できますが、一般的にmd 5暗号化方式を選択し、パラメータの面ではユーザー名+鍵を使用できます
2.暗号化された文字列をフロントエンドに渡す
3.フロントエンドはクッキーでtokenとユーザー名を保存する
4.ブロッカーを使用して、ユーザー名とtokenを取得し、ユーザー名を使用してtokenを作成し、照合し、一致すれば行を放すことができます.
さあ栗をあげましょう
まずプロジェクト構造を簡単に紹介します
JFinal + mysql + jQuery
実はね、JFinalというフレームワークは簡単だから、ネットでdemoを探してみればいいんだよ.
まずloginページを貼り付けます
そしてもちろんこのページの扱い方
具体的なtoken暗号化の実現は言わないで、ネット上で大きくて、私がアップロードしたコードパッケージの中にもあります.
ここまで来ると、ユーザーがログインに成功すると、tokenはクッキーに保存されます.そしてtokenの検証
ブロッキングの使用:
簡単なindexページを書いてテストします
プロジェクトのダウンロード先:http://download.csdn.net/detail/a8250852/9848448
Token入門事例今日はTokenの基本原理をご紹介します(最も率直な方法で)
同じ鍵2枚
これは不思議なホテルで、すべての客室に鍵の穴がありませんが、どの部屋にも鍵職人がいます.
この革命的なホテルの安全管理方式はこうです.
お客様はロビーに来て、フロントに口座番号とパスワードを教えて、フロントは彼に鍵をあげました.
彼は鍵を持って部屋の前に来て、鍵職人は彼の名前を聞いて、すぐに鍵を作って、フロントの鍵と比較して、一致すれば、ユーザーはドアに入ることができます.
これから、このホテルはユーザーアカウント情報を保存する必要のないホテルになりました!
以上が基本概念です
基本的な技術実現ルートについてお話しします.
1.ユーザーはログインページにアカウントパスワードを入力し、提出後、javaバックグラウンドで検証を行い、正しい場合はtokenトークンを作成する
具体的な制作過程:
渡された値を1つ暗号化すればtokenトークンとして作成できますが、一般的にmd 5暗号化方式を選択し、パラメータの面ではユーザー名+鍵を使用できます
2.暗号化された文字列をフロントエンドに渡す
3.フロントエンドはクッキーでtokenとユーザー名を保存する
4.ブロッカーを使用して、ユーザー名とtokenを取得し、ユーザー名を使用してtokenを作成し、照合し、一致すれば行を放すことができます.
さあ栗をあげましょう
まずプロジェクト構造を簡単に紹介します
JFinal + mysql + jQuery
実はね、JFinalというフレームワークは簡単だから、ネットでdemoを探してみればいいんだよ.
まずloginページを貼り付けます
"java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title heretitle>
<script src ="js/jquery-1.8.3.min.js"type="text/javascript">script>
<script src ="js/jquery.cookie.js"type="text/javascript">script>
<script src ="js/jquery.form.js"type="text/javascript">script>
head>
<body>
<form action="token/signIn" id = loginForm>
username:<br>
<input type="text" name="username" id = "username" value="Mickey">
<br>
password:<br>
<input type="text" name="password" id = "password" value="Mouse">
<br><br>
<input type = "button" id ="p" value="Submit">
form>
body>
<script type="text/javascript">
$(document).ready(function(){
$("#p").click(function(){
$("#loginForm").ajaxSubmit({
success : function(data) {
console.log(data);
if(data.flag){
$.cookie('userToken', data.token);
$.cookie('username',$("#username").val());
$.cookie('password',$("#password").val());
}
else alert(" ");
}
});
});
});
script>
html>
そしてもちろんこのページの扱い方
package controller;
import java.util.HashMap;
import java.util.Map;
import util.SecurityUitl;
import com.jfinal.core.Controller;
import service.UserService;
public class TokenController extends Controller {
private UserService userService = new UserService();
public void signIn(){
String username = getPara("username");
String password = getPara("password");
System.out.print(username+password);
boolean loginCheck = userService.login(username, password);//
if(loginCheck){
//token
Map a = new HashMap();
a.put("username", username);
a.put("miyao", "111111");
Map token = new HashMap();
setAttr("flag",true);
setAttr("token",SecurityUitl.authentication(a));
renderJson();//
}
else{
setAttr("flag",false);
renderJson();
}
}
public void userAu(){
String username = getPara("username");
String token = getPara("token");
Map a = new HashMap();
a.put("username", username);
a.put("miyao", "111111");
renderJson(SecurityUitl.judeAu(a, token));
}
}
具体的なtoken暗号化の実現は言わないで、ネット上で大きくて、私がアップロードしたコードパッケージの中にもあります.
ここまで来ると、ユーザーがログインに成功すると、tokenはクッキーに保存されます.そしてtokenの検証
ブロッキングの使用:
package interceptor;
import java.util.HashMap;
import java.util.Map;
import com.jfinal.aop.Interceptor;
import com.jfinal.aop.Invocation;
import com.jfinal.config.Interceptors;
import com.jfinal.core.Controller;
import com.jfinal.render.Render;
import util.SecurityUitl;
public class AuthInterceptor implements Interceptor{
private String[] interceptList = {"/login.jsp","/token/signIn"};
@Override
public void intercept(Invocation invocation) {
// TODO Auto-generated method stub
System.out.println(" ");
// ,
boolean flag = true;
for(int i = 0 ; i < interceptList.length ; i = i + 1){
if(invocation.getActionKey().equals(interceptList[i])) flag = false;
}
if(flag){
Controller controller = invocation.getController();
//controller.setSessionAttr("flag", true);
//Boolean loginUser = controller.getSessionAttr("flag");
System.out.println("getUserController:"+controller.getCookie("userToken"));
Map a = new HashMap();
a.put("username", controller.getCookie("username"));
a.put("miyao", "111111");
if(controller.getCookie("userToken").equals(SecurityUitl.authentication(a))){
System.out.println("token , ");
invocation.invoke();
}
else{
System.out.println(" ");
controller.redirect("/login.jsp");
}
}
else invocation.invoke();
}
}
簡単なindexページを書いてテストします
"java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title heretitle>
<script src ="js/jquery-1.8.3.min.js"type="text/javascript">script>
<script src ="js/jquery.cookie.js"type="text/javascript">script>
head>
<body>
body>
<script type="text/javascript">
alert($.cookie("userToken"));
script>
html>
プロジェクトのダウンロード先:http://download.csdn.net/detail/a8250852/9848448