我正在尝试使我的视图组件只有在用户登录时才可访问。我正在检查用户是否未通过身份验证,然后重定向到登录页面,但以下代码显示错误
public IViewComponentResult Invoke(int? id)
{
if (!User.Identity.IsAuthenticated)
{
return View("~/Areas/Identity/Pages/Account/Login.cshtml");
}
//other stuff
}
但此代码在登录页面上显示错误
ArgumentNullException: Value cannot be null.
Parameter name: viewData
在检查loginviewmodel时,它只具有接受参数的重载构造函数
public LoginModel(SignInManager<IdentityUser> signInManager, ILogger<LoginModel> logger)
我想不出该怎么寄这些芝麻。或者有一种更好的方法可以重定向到登录页面
发布于 2019-05-14 03:17:51
你读过这个吗:https://docs.microsoft.com/en-us/aspnet/core/mvc/views/overview?view=aspnetcore-2.2
使用return View()
时,ASP.net在Views
文件夹中查找以控制器命名的文件夹,以及以方法命名的视图。因此,当您在AccountController的方法配置文件中使用return View()
时,asp.net会在Views/Account/Profile.cshtml中查找视图。
view方法可以选择性地接受一个参数。这里你需要传递一个视图模型(你想要在视图中显示的数据)
此外,如果您想授权访问控制器方法,则应该使用基于角色或基于声明的授权:https://docs.microsoft.com/en-us/aspnet/core/security/authorization/roles?view=aspnetcore-2.2
https://stackoverflow.com/questions/56118317
复制相似问题