我需要幫助爲用戶實施驗證邏輯。我需要檢查用戶輸入的密碼是否與SQL Server用戶表中的passwordhash
匹配。尖銳的架構,我如何以及在哪裏實現查詢?
對我來說最大的問題是,我在哪裏實現這種驗證邏輯?
你可以看到我下面的用戶實現:
public class User : BaseEntity
{
public virtual string Username { get; set; }
public virtual string Hash { get; set; }
public virtual string Salt { get; set; }
}
public interface IUserTasks
{
List<User> GetAll();
User Get(int id);
User CreateOrUpdate(User user);
void Delete(int id);
bool Validate(string username, string password);
}
public class UserTasks : IUserTasks
{
private readonly IRepository<User> _userRepository;
private readonly IValidateHashQuery _validateHashQuery;
public UserTasks(IRepository<User> userRepository, IValidateHashQuery validateHashQuery)
{
_userRepository = userRepository;
_validateHashQuery = validateHashQuery;
}
public List<User> GetAll()
{
return _userRepository.GetAll().ToList();
}
public User Get(int id)
{
return _userRepository.Get(id);
}
public User CreateOrUpdate(User user)
{
return _userRepository.SaveOrUpdate(user);
}
public void Delete(int id)
{
var entity = _userRepository.Get(id);
if(entity != null)
{
_userRepository.Delete(entity);
}
}
public bool Validate(string username, string password)
{
return _userRepository.PerformQuery(_validateHashQuery) != null ? true : false;
}
}
確需實施Task
裏面執行驗證邏輯,或者我需要創建我的領域內一個新的查詢對象,並在我的Task
實現中使用它?
我真的需要幫助,期待您的回覆!
羅布
但是Query對象在那裏呢?我認爲這些對象用於執行自定義查詢... –
你在談論http://martinfowler.com/bliki/CQRS.html嗎?然後遵循完全相同的庫注入模式並創建IQuery對象(IUserQueries)並將其注入到您的用戶構造函數中 –
問題是IQuery接口不支持ExecuteQuery方法的參數。您發送的文章看起來不錯,我會花一些時間閱讀它。 –