当我进入我的主页时,[授权]标签会将我重定向到登录页面(好!)。但在我输入凭据后,似乎只是刷新登录页面(不好!)。
家庭控制器:
[Authorize]
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
//other code
}
帐户管理员:
[Authorize]
public class AccountController : Controller
{
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Login(LoginModel loginModel, string returnUrl)
{
UserRoles userRoles = new UserRoles();
UserRole userRole = userRoles.DbSet.FirstOrDefault(u => u.User == loginModel.UserName);
if (ModelState.IsValid && Membership.ValidateUser(loginModel.UserName, loginModel.Password))
{
return RedirectToLocal(returnUrl);
}
ModelState.AddModelError("", "Bad login");
return View(loginModel);
}
//other code
}
修改1:
填写登录表单后, loginModel
会自动传入。
returnUrl
是以前访问过的网址,在这种情况下,它是家庭控制器。默认情况下,它也是家庭控制器。
我认为问题可能是由于某种程度上没有将用户设置为已验证,因此当它返回到Home Controller时,[Authorize]标签会再次激活。你们觉得怎么样?
编辑2: 在Global.asax.cs中:
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}
此处没有自定义路由表,默认情况下一切都是。
在Web.Config中:
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
正确连接到我的登录功能。
会员身份验证有效,我已对其进行了测试。
答案 0 :(得分:2)
试试这个:
if (ModelState.IsValid && Membership.ValidateUser(loginModel.UserName, loginModel.Password))
{
FormsAuthentication.SetAuthCookie(loginModel.UserName, true);
return RedirectToLocal(returnUrl);
}