현재 내 자신의 사용자 지정 멤버 자격 공급자를 구현했으며 현재 ValidateUser() 만 덮어 씁니다. 나는 또한 signalr을 사용하고있다. 현재 메시지를 보내고 모든 리스너에게 보내는 단순한 메소드이다. 이 명령을 독자적으로 실행할 수 없도록 몇 가지 유효성 검사를 추가하고 싶습니다. 지금까지 당신이 사용을 할 수 발견 : 나는 현재 사용자 지정 멤버 자격 공급자의 값이 false 사용하고 있기 때문에 내 문제는 생각입니다사용자 지정 멤버 자격 공급자를 사용하는 신호음자
[HubName("messageController")]
public class MessageController : Hub
{
public void SendMessage(string message)
{
if (Context.User.Identity.IsAuthenticated) // this line not working
{
Clients.addMessage(message);
}
else
{
Clients.addMessage("not authenticated");
}
}
}
Context.User.Identity.IsAuthenticated. 대신 여기에서 사용해야하는 다른 것이 있습니까? 내가 여기서 무엇을
[AllowAnonymous]
[HttpPost]
public ActionResult Login(LoginModel model, string returnUrl)
{
if(Membership.ValidateUser(model.UserName, model.Password))
{
// Need something here to actually set the logged in user
}
return RedirectToAction("Index", "");
}
을 잃었 :
현재 내가 실행 로그인 할 때? 세션을 처리하기 위해 자신의 코드를 저장해야합니까? FormsAuthentication.SetAuthCookie(model.UserName, true);
을 사용해 보았습니다.하지만 그 오류는 확실합니다. 역할을 Context.User.IsInRole("Admin")
으로 변경하여 역할을 도입하려고 시도했을 때 false를 반환했습니다. 나는 (절대 디버깅 없을 때이 방법에 도달) 아래의 사용자 모델을 사용하더라도 :
public class User : IPrincipal
{
[Required]
[Display(Name = "User name")]
public string UserName { get; set; }
[Required]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
public long UserID;
public string Name;
public string ConnectionId;
public virtual IIdentity Identity
{
get;
set;
}
public virtual bool IsInRole(string role)
{
return true;
}
}
을 나는, 어떤 아이디어를이 뭔가를 놓친 거지 꽤 확신?
감사합니다. 완벽하게 작동했습니다. 나는이 주석을보기 전에 실제로 구현했지만 감사합니다. 혼란스러운 점은 Context.User.IsInRole()을 호출 할 때'RoleProvider.GetRolesForUser'를 호출 할 때'RoleProvider.IsUserInRole()'이 호출되지 않는다는 것입니다. – user1434177