Я использую onsen-ui и angularjs для доступа к функции входа в Monaca, на самом деле это хорошо работает, когда я отлаживаю iphone и просматриваю на веб-сайте, но когда я пытаюсь использовать его в системе Android, я считаю, что файлы cookie не сохраняются. В следующий раз, когда я перейду на страницу входа, то, что я вижу, является страницей приветствия, но в системе Android система попросила меня снова войти в систему. Когда я вхожу в систему, я сохраняю свою информацию в cookie. Мой код выглядит следующим образом:
$scope.login = function(){
$.ajax({
type: 'post',
url: 'https://www.xxxxxxx.com/api/public/user_login',
data:{
username:document.getElementById('login_username').value,
password:document.getElementById('login_password').value
},
success: function(data) {
if(data.error != "" & data.error != null ){
alert(data.error);
delCookie('username');
}else if(data.status == 0){
setCookie('username',data.username,365);
$scope.username = getCookie('username');
document.getElementById('loginInfo').style.display="none";
document.getElementById('welcome').style.display="block";
}
},
});
};
function getCookie(login_name){
if (document.cookie.length>0){
login_start=document.cookie.indexOf(login_name + "=")
if (login_start!=-1){
login_start=login_start + login_name.length+1;
login_end=document.cookie.indexOf(";",login_start);
if (login_end==-1){
login_end=document.cookie.length;
}
return unescape(document.cookie.substring(login_start,login_end));
}
}
return "";
}
function setCookie(c_name,value,expiredays){
var exdate=new Date();
exdate.setDate(exdate.getDate()+expiredays);
document.cookie=c_name+ "=" +escape(value)+((expiredays==null) ? "" : "; expires="+exdate.toGMTString());
}
function delCookie(name){
var exp = new Date();
exp.setTime (exp.getTime() - 1);
var cval = getCookie (name);
document.cookie = name + "=" + cval + "; expires="+ exp.toGMTString();
}
Вы можете использовать $cookieStore
который теперь кажется устаревшим, вместо этого '$ cookie - это тот, который нам нужно использовать.
Вместо использования document.cookie
, который является веб-API, используйте угловую встроенную службу для того же самого, у вас не будет проблем с этим в Android и ios.
Вам нужно просто ввести зависимость в свой контроллер:
в виде:
angular.module('sampleApp', ['ngCookies'])
.controller('AuthController', function ($scope,
$cookies,//injecting the dependency here
$timeout,
ngDialog) {
$scope.login = function(){
$.ajax({
type: 'post',
url: 'https://www.xxxxxxx.com/api/public/user_login',
data:{
username:document.getElementById('login_username').value,
password:document.getElementById('login_password').value
},
success: function(data) {
if(data.error != "" & data.error != null ){
alert(data.error);
delCookie('username');
}else if(data.status == 0){
setCookie('username',data.username,365);
$scope.username = getCookie('username');
document.getElementById('loginInfo').style.display="none";
document.getElementById('welcome').style.display="block";
}
},
});
};
function getCookie(login_name){
if (document.cookie.length>0){
login_start= document.cookie.indexOf(login_name + "=")
//use $cookies.get(login_name) to get value of the login_name param set in cookie
if (login_start!=-1){
login_start=login_start + login_name.length+1;
login_end=document.cookie.indexOf(";",login_start);
//use $cookies.get(login_name) to get value of the login_name param set in cookie
if (login_end==-1){
login_end=document.cookie.length;
//use $cookies.get(login_name) to get value of the login_name param set in cookie
}
return unescape(document.cookie.substring(login_start,login_end));
}
}
return "";
}
function setCookie(c_name,value,expiredays){
var exdate=new Date();
exdate.setDate(exdate.getDate()+expiredays);
document.cookie=c_name+ "=" +escape(value)+((expiredays==null) ? "" : "; expires="+exdate.toGMTString());
//use $cookies.put(key, value) to get value of the login_name param set in cookie
}
function delCookie(name){
var exp = new Date();
exp.setTime (exp.getTime() - 1);
var cval = getCookie (name);
document.cookie = name + "=" + cval + "; expires="+ exp.toGMTString();
//use $cookies.put(key, value) to get value of the login_name param set in cookie
}
}
Его легко внедрить и использовать, пожалуйста, обратитесь к документации по угловым устройствам.