Я не уверен, правильно ли я это делаю, но просто хотел знать, как обращаться с loggedonuser в моей системе.
Требования
* Пользователь войдет в систему с CompanyID, UserID и паролем
* Мы проверяем, может ли пользователь войти в систему, если это так
* Мы храним CompanyID и UserID внутри куки, чтобы loggedonuser мог получить доступ к областям нашего сайта, мы делаем много звонков в БД, которые требуют как компании, так и пользователя
Вопрос: Как мне связаться с зарегистрированным пользователем во всех моих службах?
Мой код - чтобы вы знали, что я делаю:
public interface IUserSession
{
void SetClientStore(string LoginID, string Identifier); //store in cookie
void Logout();
string LoginID { get; private set; } //in cookie
string CompanyIdentifier { get; private set; } //in cookie
}
public interface IAuthorizationService
{
bool AuthenticateUser(string Identenfier, string LoginID, string password);
}
public class HandleAuthentication
{
private readonly IUserSession _session;
private readonly IAuthorizationService _auth;
public HandleAuthentication(IUserSession session,
IAuthorizationService auth)
{
_session = session;
_auth = auth;
}
public void AuthenticationUser(string Identenfier, string LoginID, string password)
{
if (_auth.AuthenticateUser(Identenfier, LoginID, password))
_session.SetClientStore(LoginID, Identenfier);
else
_session.Logout();
}
Должен ли я получить текущего пользователя в моем базовом контроллере и передать его везде? Так что все мои сервисы не зависят от интерфейса ??
Итак, в моем базовом контроллере я создаю свойство с именем:
public UserProfile MyProfile {get {return //something here;}}
затем отправьте это свойство любой службе, используйте это свойство в любых вызовах БД и т. Д. UserProfile будет строго типизированным объектом.