일부 역할 기반 종속성 (Ioc, Ninject)을 설정하고 싶습니다. 그러나 로그인이 성공하면 사용자의 역할을 알 수 없습니다. 주입을 언제 어디에서 적용해야합니까? 역할을 강제로 초기화 할 수 있습니까? 아니면 직접 가져와야합니까? applicatin는 HomeContoller (아무 역할 세트)로 시작MVC 4에서 역할은 언제 초기화됩니까? 로그인 성공 후 아니요
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Login(LoginModel model, string returnUrl)
{
if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe))
{
DoRolebasedObjectBinding(model.UserName); // THIS IS THE WRONG PLACE!
return RedirectToLocal(returnUrl);
}
// If we got this far, something failed, redisplay form
ModelState.AddModelError("", "The user name or password provided is incorrect.");
return View(model);
}
가의 성공적인 로그인 후 appllication이 HomeController을 해제로 리디렉션됩니다 하나의 트릭이다 (위의 표준 코드 참조) 이제 역할 설정 강제 역할은 모든 역할 또는 addtional "일반적인"역할
public class HomeController : Controller
{
[Authorize(Roles = "Common")]
public ActionResult Index()
{
DoRolebasedObjectBinding(User.Identity.Name);
을 추가하여 HomeController에서 초기화 할 그러나 이것은 또한 시작 지점으로 HomeController를 강제로 로그인을 강제로. 다행히도 DoRolebasedObjectBinding을 호출하는 "우아한"장소입니다.
을 당신이 원하는 일에 대해 더 구체적으로 할 수 있습니다 그것을 스스로 할 ? –
이름을 기반으로 : WebSecurity.Login, 당신은 자신의 유효성 검사를하고있는 것 같습니다 그리고 회원 공급자를 사용하지 않습니다. 이 경우 각 요청에 대해 인증 된 사용자의 역할을 로딩해야합니다. 지금 가지고있는 방식대로 DoRolebasedObjectBinding()은 쿠키를 설정하고 역할을 읽고 채워야합니다 (ID 및 주체 만들기) –
개체 삽입은 로그인 한 사용자의 역할을 기반으로합니다. 역할은 로그인 이후에 설정되지만 예상 한 순간에 설정되지 않습니다 (성공적인 로그인 직후). – Gerard