我在Asp.Net Mvc5中开发网络。但今天我突然无法登录/使用身份/。
这是我的登录操作:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Login(LoginViewModel input, string returnUrl)
{
if (ModelState.IsValid)
{
string personalNo = AppStaticConfig.ServiceController.PupilLogin(input.Code, input.Password, ModelState);
if (!string.IsNullOrEmpty(personalNo))
{
PupilProfile pp = AppStaticConfig.ServiceController.PupilDetail(personalNo, AppStaticConfig.SchoolID, ModelState);
var identity = new ClaimsIdentity(new[] {
new Claim(ClaimTypes.Name, pp.pupil.LastName.Substring(0, 1) + "." + pp.pupil.FirstName),
new Claim(ClaimTypes.NameIdentifier, personalNo),
new Claim("pupilCode", input.Code)
},
DefaultAuthenticationTypes.ApplicationCookie,
ClaimTypes.Name, ClaimTypes.Role);
identity.AddClaim(new Claim(ClaimTypes.Role, "guest"));
Authentication.SignIn(new AuthenticationProperties{ IsPersistent = true }, identity);
TempData["pp"] = pp;
return RedirectToAction("PupilProfile", "Pupil");
}
}
return View(input);
}
此处的Pupil控制器的PupilProfile操作在成功登录后重定向:
[Authorize]
public class PupilController : Controller
{
[HttpGet]
public ActionResult PupilProfile()
{
PupilProfile pp = TempData["pp"] != null ? TempData["pp"] as PupilProfile : AppStaticConfig.ServiceController.PupilDetail(User.Identity.GetUserId(), AppStaticConfig.SchoolID, ModelState);
return View(pp);
}
}
我认为问题是User.Identity未在Authentication.SignIn
中设置。
Any1知道出了什么问题?
答案 0 :(得分:2)
问题解决了。我认为是一些环境问题。
我试图解决的问题:
希望它有所帮助。
答案 1 :(得分:0)
我刚刚切换到不同的浏览器,就是这样。