use*_*700 4 c# asp.net ajax jquery httphandler
我已经创建了一个HttpHandler,我将使用jquery-Ajax调用.
这个HttpHandler将访问数据库并检查与当前被烧毁的用户相关的内容.
通过使用Session,使用名为user_id的属性将用户视为已登录.
Session["user_id"] = userId;
Run Code Online (Sandbox Code Playgroud)
我试图在HttpHandler中检索这个Session,但这似乎不起作用.
所以我考虑将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);
}
});
Run Code Online (Sandbox Code Playgroud)
但这似乎是一个坏主意,任何阅读代码的人都可以使用他想要的id访问Handler.
那么在这种情况下我该怎么办?我希望Handler获取user_id以进行数据库访问,但我想确保此user_id是已登录用户的实际ID.无法访问处理程序中的会话?
使用ajax调用传递会话ID听起来不太好.
您应该使用标记IReadOnlySessionState接口标记处理程序,并通过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();
}
}
Run Code Online (Sandbox Code Playgroud)