mar*_*ith 3 c# cookies asp.net-mvc
我有一个MVC3网络应用程序,它有效地"拴在"一个经典的ASP网站(即旧页面是经典的asp,新页面是ASP.Net MVC).该站点要求用户登录,因此为了保护新的MVC页面,我检查cookie并使用id从经典ASP登录页面创建的数据库中检索会话数据.
因为用户可以在旧页面和新页面之间切换,并且我不是在2个应用程序之间共享会话数据,所以我在我的操作方法LogIn中检查每个请求的cookie和检索数据:
public PartialViewResult LogIn()
{
var cookieId = DecodeCookieId(System.Web.HttpContext.Current.Request.Cookies["cookiename"].Value);
LoggedInViewModel viewModel = new LoggedInViewModel
{
Session = sessionRepository.Sessions.FirstOrDefault(s => s.GGAPSession_ID == cookieId)
};
return PartialView(viewModel);
}
Run Code Online (Sandbox Code Playgroud)
这将数据传递给ViewModel,ViewModel在每个MVC页面的顶部显示登录的用户名,这就是为什么我认为这是一个检查的好地方.
当我尝试修改LogIn()以检查cookie和重定向(如果未找到)时,会出现问题:
public ActionResult LogIn()
{
if (System.Web.HttpContext.Current.Request.Cookies["cookiename"] != null)
{
// same method contents as above
}
else
{
return Redirect("http://localhost/index.asp");
}
}
Run Code Online (Sandbox Code Playgroud)
我得到了一个'儿童行为不允许执行重定向行动',我理解,但我该如何绕过这个?我应该在其他地方进行cookie检查吗?我应该在哪里进行会话管理?
对,你可以HttpContext.Response.Redirect用来解决这个问题.
更改
return Redirect("http://localhost/index.asp");
Run Code Online (Sandbox Code Playgroud)
至
HttpContext.Response.Redirect("http://localhost/index.asp");
return EmptyResult();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2174 次 |
| 最近记录: |