如何重定向到returnUrl在Asp.Net MVC5中工作
发布时间:2020-05-23 19:47:56 所属栏目:asp.Net 来源:互联网
导读:我已经开始使用新的Asp.Net Identity with Owin创建了一个新的MVC 5站点.在我的“帐户”控制器中,它具有[授权]属性,我有相当标准的操作; // GET: /User/Login [AllowAnonymous] public ActionResult Login(string returnUrl) {
|
我已经开始使用新的Asp.Net Identity with Owin创建了一个新的MVC 5站点.在我的“帐户”控制器中,它具有[授权]属性,我有相当标准的操作; // GET: /User/Login
[AllowAnonymous]
public ActionResult Login(string returnUrl)
{
ViewBag.ReturnUrl = returnUrl;
return View();
}
// POST: /User/Login
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Login(LoginViewModel model,string returnUrl)
{
try
{
if (ModelState.IsValid)
{
var userApi = new UserService();
var apiUser = await userApi.LogIn(UserManager,model.CardNumber,model.Pin,model.RememberMe);
if (apiUser != null)
{
await SignInAsync(apiUser,model.RememberMe);
if (string.IsNullOrEmpty(returnUrl))
{
return RedirectToAction("UserLoggedIn","User");
}
}
else
{
ModelState.AddModelError("","Invalid username or password.");
}
}
}
catch (Exception ex)
{
Trace.TraceError("Cannot login {0}",ex.ToString());
Response.AppendToLog(ex.ToString());
ModelState.AddModelError("",ex.ToString());
}
// If we got this far,something failed,redisplay form
return View(model);
}
我的问题是关于returnUrl行为,上面的代码在某种意义上起作用,如果用户没有登录并在具有属性[Authorize]的控制器中调用一个动作,它将被发送到上面的登录操作,然后返回到请求的控制器/操作.哪个好,但是怎么样?它安全吗? 在这篇关于“Preventing open redirect attacks”(对于早期版本的Asp.Net MVC)的文章中,建议在执行重定向之前检查returnUrl是否是本地URL,这是我应该做的还是现在由框架? 干杯, 解决方法您需要使用此方法检查URL是否确实是本地的(它不是由框架自动处理): http://msdn.microsoft.com/en-us/library/system.web.mvc.urlhelper.islocalurl%28v=vs.118%29.aspxif (!string.IsNullOrEmpty(returnUrl) && Url.IsLocalUrl(returnUrl))
{
return Redirect(returnUrl);
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- ASP.NET MVC3 – 您如何处理探测请求?
- asp.net-core – 在ASP.NET MVC Core中仍然存在V
- 在加载asp.net页面时显示gif
- ASP.NET MVC,ActionFilters,静态类和传递数据
- asp.net – 通过javascript禁止文本框中的退格
- asp.net-mvc-3 – 在仅HTTPS站点上对HTTP HEAD请
- .net – 回发数据和视图状态数据之间的区别是什么
- asp.net – 如何正确使用RegisterForEventValida
- asp.net-mvc – visual studio 2013“添加控制器
- asp.net – 403从WindowsAzure.Storage生产错误
热点阅读
