正常地址是http://xxxx/OA/pms/
但是之前有部分用户保存的是 http://xxxx/oa/pms/ 小写 或者不小心输入小写。
希望能自动跳转到http://xxxx/OA/pms/ 页面
请问怎么解决呢?
目前这个是跳转的控制器 没测试 感觉有问题。 OA/pms/是iis发布设置的虚拟目录。
namespace pms.AOP
{
public class LoginCheckAttribute : Controller
{
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (filterContext.RouteData.Values["controller"].ToString().IndexOf("Login", StringComparison.Ordinal) >= 0)
{
//oa/pms/跳转
if (filterContext.HttpContext.Request.Url != null && filterContext.HttpContext.Request.Url.ToString().IndexOf("oa/pms", StringComparison.Ordinal)>=0)
{
filterContext.Result = RedirectToRoute(new { Controller = "Login", Action = "Index" });
}
return;
}
var token = "";
var httpContext = System.Web.HttpContext.Current;
if (httpContext.Request.Cookies["token"] != null) token = httpContext.Request.Cookies["token"].Value;
if (token == "")
{
var httpCookie = httpContext.Request.Cookies["Redis_SessionId"];
if (httpCookie != null)
token = "Session_" + httpCookie.Value;//第3方登入
}
var flag = RedisBase.Hash_Exist(token, "userName");
if (flag) return;
filterContext.Result = RedirectToRoute(new { Controller = "Login", Action = "Index", flag = "expired" });
base.OnActionExecuting(filterContext);
}
}
}
4 回答
料青山看我应如是
TA贡献1772条经验 获得超8个赞
首先,IIS发布默认是不区分大小写的。另外,作为虚拟目录,浏览器会当成两个来存储localStorage么(还真没注意过这个问题)?
就问题本身来说,在页面index.html上,写个js,发现是小写的oa,就重新设定一个新的跳转地址。(该方式也可以在后端通过Navigate来做)。
摇曳的蔷薇
TA贡献1793条经验 获得超6个赞
其实大小写结果一样 只是我页面保存了cookie 和 localstorage 登入成功后变成http://xxxx/OA/pms/
之前写入的都在 http://xxxx/oa/pms/这里域里面 所以会出现一个异常问题 提示未登入。
- 4 回答
- 0 关注
- 534 浏览
添加回答
举报
0/150
提交
取消