SmartFoxServer學習(4)--登陸

前期準備工做前面都已作好, 就不在多說, 直接功能實現了!session

 

SmartFoxServer的登陸分Guest LoginCustom Login 兩種, 默認爲Guset Loginide

Guset Login加密

  1. 只須要用戶名, 甚至用戶名都不須要, 密碼就更不須要了, 直接發送LoginRequest 便可, 不作任何驗證spa

  2. 不會觸發服務端的USER_LOGIN 事件3d

Gustom Logincode

  1. 須要用戶名, 須要密碼, 驗證經過後纔算登陸成功blog

  2. 會觸發服務端的USER_LOGIN 事件事件

 

Custom Login 開啓方式get

登陸後臺, 進入 Zone Configurator, 選中要設置的Zone, 雙擊進入編輯模式, 在General tab頁找到Use Custom Login, 將其設置爲開啓狀態.input

 

下面是Custom Login實現 

客戶端實現

1. 添加監聽事件

1 //add events
2 _sfs.AddEventListener(SFSEvent.CONNECTION, onConnection);
3 _sfs.AddEventListener(SFSEvent.CONNECTION_LOST, onConnectionLost);
4 
5 _sfs.AddEventListener(SFSEvent.LOGIN, onLogin);
6 _sfs.AddEventListener(SFSEvent.LOGIN_ERROR, onLoginError);
View Code

2. 鏈接成功後發送登陸請求

1 ISFSObject paras = SFSObject.NewInstance();
2 paras.PutUtfString("test", "登陸參數");
3 // 參數1: 用戶名
4 // 參數2: 密碼
5 // 參數3: 登入的Zone名稱
6 // 參數4: 額外參數
7 IRequest req = new LoginRequest(inputUsername.text, inputPassword.text, "GameZone", paras);
8 _sff.Send(req);
View Code

3. 若登陸成功會觸發LOGIN 的監聽方法, 失敗則會觸發LOGIN_ERROR 的監聽方法.

 

服務端實現

1. 添加USER_LOGIN事件處理類

1 addEventHandler(SFSEventType.USER_LOGIN, OnUserLogin.class);
View Code
1 public class OnUserLogin extends BaseServerEventHandler {
2 
3     @Override
4     public void handleServerEvent(ISFSEvent event) throws SFSException {
5                 // do something
6     }
7 }
View Code

2. 登陸驗證

 1 @Override
 2 public void execute(ISFSEvent event) throws SFSLoginException {
 3     
 4     // 用戶名
 5     String username = (String) event.getParameter(SFSEventParam.LOGIN_NAME);
 6     // 密碼(密文)
 7     String password = (String) event.getParameter(SFSEventParam.LOGIN_PASSWORD);
 8     // 當前Session
 9     Session session = (Session) event.getParameter(SFSEventParam.SESSION);
10     
11     // 密碼(明文),與客戶端密碼進行驗證
12     String pwd = "test";
13     if (!getApi().checkSecurePassword(session, pwd, password)) {
14         // 驗證失敗,拋出登陸異常信息
15         throw new SFSLoginException("密碼錯誤!");
16     }else{
17         // 驗證經過
18     }
19 }
View Code

 

須要注意的地方

1. 客戶端的密碼是通過加密後發送的, 非明文!

2. 服務端若是驗證失敗直接拋出異常便可, SmartFoxServer會本身封裝請求返回, 本身不用另外推送消息.

 

整個登陸過程仍是挺簡單的, 具體流程爲, 首先客戶端和服務端分別監聽本身的登陸事件, 當鏈接成功後客戶端發送登陸請求, 服務端觸發USER_LOGIN事件進行驗證, 驗證難過客戶端觸發LOGIN事件, 驗證失敗拋出SFSLoginException, 客戶端觸發LOGIN_ERROR事件.

 

本文版權歸做者和博客園共有,來源網址:http://www.cnblogs.com/code-boy/歡迎各位轉載,可是未經做者本人贊成,轉載文章以後必須在文章頁面明顯位置給出做者和原文鏈接,不然保留追究法律責任的權利。

相關文章
相關標籤/搜索