2011-01-14 5 views
5

Итак, я пытаюсь представить концепцию пользователя для своего приложения и получил свой собственный набор пользовательских подпрограмм входа и т. Д., Работающих нормально. В моем модуле я привязываю свой IUserSession к моей реализации и к InSingletonScope.Ninject за сеанс singleton?

Теперь я подозреваю, что это было так, и я смог доказать, что это неправильная вещь, если я попытаюсь войти в систему с двумя пользователями на одном сайте, я получаю только один набор данных.

Если я реализую MemberhipProvider, избегаю такого ограничения. Я знаю, что если я внедряю поставщика членства, мне не нужно все вводить, но мой логин - это не просто имя пользователя и пароль, как идти о входе в систему с дополнительными данными »?

ответ

11

InSingletonScope все приложение не ограничено в сеансе пользователя ничего вы будете менять, что вы должны использовать что-то другое, как InRequestScope но это только общие за фактический запрос ...

Попробуйте этот сайт:.. http://iridescence.no/post/Session-Scoped-Bindings-With-Ninject-2.aspx

public static class NinjectSessionScopingExtention { 
    public static void InSessionScope<T>(this IBindingInSyntax<T> parent) { 
     parent.InScope(SessionScopeCallback); 
    } 

    private const string _sessionKey = "Ninject Session Scope Sync Root"; 

    private static object SessionScopeCallback(IContext context) { 
     if (HttpContext.Current.Session[_sessionKey] == null) { 
      HttpContext.Current.Session[_sessionKey] = new object(); 
     } 

     return HttpContext.Current.Session[_sessionKey]; 
    } 
} 
+0

Is есть ли более подходящий метод для пользовательских сеансов в MVC? Это полностью соответствует моей потребности в работе программного обеспечения, но для справок в будущем вы k теперь какие-либо примеры индивидуальных поставщиков членства? – Hammerstein

+0

Сверху моей головы Я не могу придумать, каким образом настраиваемый членский провайдер обойдет тот факт, что вам все равно нужно хранить свою информацию в сеансе. Ваш членский член будет делать инъекцию - если я правильно вас пойму. – Buildstarted

+1

Этот код даст вам проблемы, если HttpContext.Current имеет значение NULL или HttpContext.Current.Session является нулевым (например, внутри HttpModule). – cbp

Смежные вопросы