gpt4 book ai didi

ios - 如何使用解析终止重复的用户 session ?

转载 作者:搜寻专家 更新时间:2023-10-30 21:59:31 25 4
gpt4 key购买 nike

我希望我的 PFSession 是独占的,这意味着,如果用户已经在某个位置的某个设备上登录,如果另一个设备使用相同的凭据登录,我希望之前的 session 被终止,并带有当然是警报 View 的消息。有点像旧的 AOL Instant Messaging 格式。那么有谁知道我将如何 swift 这样做?它需要 CoreLocation 吗?

我在当前用户位置找到了这篇文章,如何使用它来解决我的问题?

https://www.veasoftware.com/tutorials/2014/10/18/xcode-6-tutorial-ios-8-current-location-in-swift

更新

所以我刚刚阅读了这篇关于他们的可撤销 session 设置的解析文章

http://blog.parse.com/announcements/announcing-new-enhanced-sessions/

然而,当我使用不同的设备登录同一个帐户时,允许 session 相应地存在,这是我不希望的。我该如何解决我的困境?

更新

我已经得到了关于如何实现我正在尝试实现的整体方法的非常详细的描述:

enter image description here

但是我不太精通云代码实现,有人可以非常简要地描述一段与他试图传递给我的代码相似的代码吗?

更新

所以我做了一些更多的研究,并了解了我被告知如何在解析中使用云代码调用,并且由于我想销毁当前用户的先前 session ,所以我在我的代码中编写了以下代码登录“成功”逻辑:

            PFUser.logInWithUsernameInBackground(userName, password: passWord) {
(user, error: NSError?) -> Void in
if user != nil || error == nil {
dispatch_async(dispatch_get_main_queue()) {
self.performSegueWithIdentifier("loginSuccess", sender: self)

PFCloud.callFunctionInBackground("currentUser", withParameters: ["PFUser":"currentUser"])
//..... Get other currentUser session tokens and destroy them

}

} else {

即使那是正确的格式或代码,但我确定这是正确的方向,对吗?任何人都可以编辑或扩展我要实现的代码吗?

最佳答案

您应该首先查看 cloud code quick start
然后,您将定义以下云代码函数:

Parse.Cloud.define('destroyUserSessions', function(req, res) {
//the user that sends the request
var currentUser = req.user;
//send from client
var currentUserInstallationId = req.param.installationId;
var Session = Parse.Object.extend('Session');
var userSessionQuery = new Parse.Query(Session);
//all sessions of this user
userSessionQuery.equalTo('user', currentUser);
//except the session for this installation -> to not log the request performing user out
userSessionQuery.notEqualTo('installationId', currentUserInstallationId);

userSessionQuery.find({
success: function(userSessionsToBeRevoked) {
Parse.Object.destroyAll(userSessionsToBeRevoked, {
success: function() {
//you have deleted all sessions except the one for the current installation
var installationIds = userSessionsToBeRevoked.map(function(session) {
return session.installationId;
});
//you can use the installation Ids to send push notifications to installations that are now logged out
},
error: function(err) {
//TODO: Handle error
}
});
},
error: function(err) {
//TODO: Handle error
}
});
});

注意:此代码未经测试,并做了一些假设,例如您启用了可撤销 session ,并且在执行请求时有用户登录

您可以这样调用该函数:

let installationId = PFInstallation.currentInstallation().installationId

PFCloud.callFunctionInBackground("destroyUserSessions", withParameters: ["installationId": installationId]) { success, error in
//TODO: Handle success or errors
}

希望这可以帮助您入门。

关于ios - 如何使用解析终止重复的用户 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32217488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com