如何解决Web 配置中的 Aspx 授权并不完全适用于 Web 方法
我在位于 Subscription 文件夹的 Index.aspx 页面中有一个 Web 方法。在这个文件夹中,我添加了这个 web.config 文件:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</configuration>
现在我有一个对 web 方法的 ajax 调用。当用户未登录时,我希望ajax调用无法命中该方法并返回错误。实际上,Web 方法并未按预期命中(访问被拒绝),但 ajax 调用仍然返回成功。
这是我的脚本:
function Subscribe(topicId) {
$.ajax({
url: '<%= ResolveUrl("~/Subscription/Index.aspx/Subscribe") %>',contentType: "application/json",method: "POST",data: JSON.stringify({ topicId: topicId }),success: function () {
// alert("Subscribed to topic " + topicId);
var a = document.getElementById("subscription:" + topicId);
a.href = "Javascript:Unsubscribe(" + topicId + ")";
var img = document.getElementById("subImg:" + topicId);
img.alt = "Unsubscribe";
img.title = "Unsubscribe";
img.src = img.src.replace("icon_subscribe.gif","icon_unsubscribe.gif");
},error: function () { alert("You must login to subscribe!"); }
});
这是我的网络方法:
[WebMethod]
public static void Subscribe(long topicId)
{
var dbContext = HttpContext.Current.GetowinContext().Get<ApplicationDbContext>();
var user = dbContext.Users.Where(u => u.UserName == HttpContext.Current.User.Identity.Name).FirstOrDefault();
if (dbContext.Subscriptions.Where(s => s.TopicId == topicId && s.UserId == user.Id).FirstOrDefault() == null)
{
var subscription = new Subscription
{
TopicId = topicId,UserId = user.Id
};
dbContext.Subscriptions.Add(subscription);
dbContext.SaveChanges();
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。