ueditor在上传文件时如何获取用户的信息,用于判定权限
最近一个项目用了ueditor 感觉还不错, 但在使用文件上传功能时,想通过获取session来获得当前用户的信息并判定是否具有上传权限,尝试了在ueditor文件上传的处理源文件uploader.cs中获取
HttpContext.Current.Session["userName"].ToString();
<%@ WebHandler Language="C#" Class="imageUp" %>
using System;
using System.Web;
using System.IO;
using System.Collections;
using System.Web.SessionState;
public class imageUp : IHttpHandler, IRequiresSessionState
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
//上传配置
int size = 2; //文件大小限制,单位MB //文件大小限制,单位MB
string[] filetype = { ".gif", ".png", ".jpg", ".jpeg", ".bmp" }; //文件允许格式
string username = context.Session["userName"].ToString();
if (!HasRight(username))
{
//提示没有权限
}
//上传图片
Hashtable info = new Hashtable();
Uploader up = new Uploader();
string pathbase = null;
int path = Convert.ToInt32(up.getOtherInfo(context, "dir"));
if (path == 1)
{
pathbase = "upload/";
}
else
{
pathbase = "upload1/";
}
info = up.upFile(context, pathbase, filetype, size); //获取上传状态
string title = up.getOtherInfo(context, "pictitle"); //获取图片描述
string oriName = up.getOtherInfo(context, "fileName"); //获取原始文件名
HttpContext.Current.Response.Write("{'url':'" + info["url"] + "','title':'" + title + "','original':'" + oriName + "','state':'" + info["state"] + "'}"); //向浏览器返回数据json数据
}
public bool IsReusable
{
get
{
return false;
}
}
}
}
[解决办法]
不需要Session集合。
你可以在用户登录时把用户id写到cookie中,然后你后台处理程序应该读取 context.Request.Cookies["uid"].Value
如果你觉得直接把用户的id保存到cookie中是“泄密”,那么你可以在后台数据库中随机产生一个Guid字符串方式“授权号”,并且把此授权号跟真实的uid对应关系保存到数据库中。这样用户就算是假冒登录,它也不知道应该假冒一个什么授权号才好。