Dav*_*ler 1 c# asp.net-core-mvc asp.net-core
我正在开发一个ASP.Net核心,MVC 6应用程序.我有一个AppControler作为我的初始控制器,如果用户试图转到具有[Authorize]属性的动作,我会重定向到我的AuthController进行登录,传入returnUrl返回.经过身份验证后,我使用...返回RedirectToAction(returnUrl).
在debug中,我可以看到returnUrl字符串设置为/ App/Timesheets.但是,在浏览器地址栏中,它的地址为http:// localhost:49940/Auth /%2FApp%2FTimeSheets.由于某种原因,它将控制器名称(Auth)附加在returnUrl之前.
这是我在AuthController中的Login操作
[HttpPost]
public async Task<ActionResult> Login(LoginViewModel vm, string returnUrl)
{
if (ModelState.IsValid)
{
var signInResult = await _signInManager.PasswordSignInAsync(vm.Username, vm.Password, true, false);
if (signInResult.Succeeded)
{
if (string.IsNullOrWhiteSpace(returnUrl))
{
return RedirectToAction("Timesheets", "App");
}
else
{
return RedirectToAction(returnUrl);
}
}
else
{
ModelState.AddModelError("", "Username or password incorrect");
}
}
return View();
}
Run Code Online (Sandbox Code Playgroud)
我可以在浏览器地址栏中手动输入http:// localhost:49940/App/Timesheets并进入正确的视图.另外,如果我添加
returnUrl = String.Empty; //Test Only
Run Code Online (Sandbox Code Playgroud)
在线之前......
if (string.IsNullOrWhiteSpace(returnUrl))
Run Code Online (Sandbox Code Playgroud)
使它执行线...
return RedirectToAction("Timesheets", "App");
Run Code Online (Sandbox Code Playgroud)
重定向工作得很好.所以它与"/Controller/Action"以问题格式传递字符串变量有关.
有任何想法吗?
ste*_*kil 10
如果您已经拥有完整的URL,则应返回a Redirect.目前您正在RedirectToAction尝试重定向到当前控制器(Auth)下的操作.
if (signInResult.Succeeded)
{
if (string.IsNullOrWhiteSpace(returnUrl))
{
return RedirectToAction("Timesheets", "App");
}
else
{
return Redirect(returnUrl);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10541 次 |
| 最近记录: |