我并不擅长ajax,所以我很难找到更好的答案。我已经尝试创建单独的“.js”文件,其中包含对其他服务的调用(用于验证用户会话),但它不起作用。如何在显示mvc视图之前“预处理”ajax调用?
我的目标是在加载视图之前验证用户会话(在MVC中)。使用验证给定会话与数据库的逻辑的唯一方法是使用ajax通过url调用休息服务。
此代码工作得很好(内部主页查看):
<script type="text/javascript">
$(function() {
$.get('@Url.Action("GetSession", "Auth")', function (getdata) {
if (getdata.UserID && getdata.SessionID && getdata.SourceIP) {
$.post('http://website.com/Rest/Authenticate/ValidateUserSession', JSON.stringify(getdata), function (response) {
if (response == false) { window.location.replace('@Url.Action("SignUp", "Auth")'); }
});
} else {
window.location.replace('@Url.Action("SignUp", "Auth")');
}
});
});
</script>
<h2>
Home</h2>
@*The content here should not appear, unless session is validated.*@
唯一的问题是,验证的过程需要3〜5秒,所以用户看到的主页Ajax调用返回前结果验证是否成功。如果验证/响应返回false
它将重定向到sigup页面。
我不知道这个过程的最佳做法是什么。现在我只是不希望主视图显示给用户,除非会话被验证。希望我能解释清楚。如果你有更好的想法,请提出建议。
附加信息:
如果可能的话,我喜欢这样做:
<script type="text/javascript">
if(!validated()){
window.location.replace('@Url.Action("SignUp", "Auth")');
}
</script>
<h2>
Home</h2>
@*The content here should not appear, unless session is validated.*@
这是一个很好的文章,但我要保持服务的调用而无需刷新页面。我会尝试这种局部视图。谢谢! – fiberOptics 2012-04-17 06:01:44