我创建了一个HttpHandler我将使用jquery-Ajax call.
This HttpHandler将访问数据库并检查与当前登录的用户.
用户被认为是通过使用 Session 登录的,其属性称为user_id.
Session["user_id"] = userId;
我试图检索这个Session in the HttpHandler但这似乎不起作用。
所以我考虑将 user_id 作为范围.
var user_id = //Retrieved in some way...
$.ajax({
url: 'QuestionRate.ashx?id=user_id',
success: function (msg, status, xhr) {
alert(msg);
},
error: function () {
alert(msg);
}
});
但这看起来确实是一个坏主意,任何会阅读代码的人都可以简单地使用他想要的 id 访问 Handler。
那么在这种情况下我能做什么呢?我希望处理程序获取用于数据库访问的 user_id,但我想确保此 user_id 是登录用户的实际 ID。没有办法访问Handler中的Session吗?
通过 ajax 调用传递会话 ID 听起来不太好。
您应该用标记标记您的处理程序IReadOnlySessionState http://msdn.microsoft.com/en-us/library/system.web.sessionstate.ireadonlysessionstate.aspx接口和会话访问为只读通过HttpContext.Current.Session
实例。
代码示例:
public class FooHandler : IHttpHandler, IReadOnlySessionState
{
public bool IsReusable
{
get { return false; }
}
public void ProcessRequest(HttpContext context)
{
string user_id = context.Session["user_id"].ToString();
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)