当前位置: 首页 > 面试题库 >

如何在AngularJS中存储当前用户上下文?

林子石
2023-03-14
问题内容

我有一个AuthService,用于登录用户,它返回一个用户json对象。我要做的是设置该对象,并使所有更改都反映在整个应用程序中(登录/注销状态),而无需刷新页面。

我将如何使用AngularJS做到这一点?


问题答案:

完成此操作的最简单方法是使用服务。例如:

app.factory( 'AuthService', function() {
  var currentUser;

  return {
    login: function() { ... },
    logout: function() { ... },
    isLoggedIn: function() { ... },
    currentUser: function() { return currentUser; }
    ...
  };
});

然后,您可以在任何控制器中引用它。以下代码监视服务中值的更改(通过调用指定的函数),然后将更改的值同步到作用域。

app.controller( 'MainCtrl', function( $scope, AuthService ) {
  $scope.$watch( AuthService.isLoggedIn, function ( isLoggedIn ) {
    $scope.isLoggedIn = isLoggedIn;
    $scope.currentUser = AuthService.currentUser();
  });
});

然后,当然可以使用您认为合适的信息;例如,在指令,模板等中。您可以在菜单控制器等中重复此操作(根据您的需要进行定制)。当您更改服务的状态时,所有这些都将自动更新。

任何更具体的内容都取决于您的实现。

希望这可以帮助!



 类似资料:
  • 问题内容: 目前,我正在使用一项服务来执行操作,即从服务器检索数据,然后将数据存储在服务器本身上。 取而代之的是,我想将数据放入本地存储中,而不是将其存储在服务器上。我该怎么做呢? 问题答案: 这是我存储和检索到本地存储的代码的一部分。我使用广播事件来保存和恢复模型中的值。

  • 我在LWJGL 3中使用OpenGL,我得到以下错误; 这是RenderUtil类,initGraphics是从我的主类的构造函数中调用的。在使用GLFW创建了一个窗口后,我还尝试调用initGraphics,该窗口也生成了类似的错误消息。 另外,我没有使用多线程。要创建一个窗口,我调用方法from my main method."

  • 公共类UserDA{private static string_connstr=configurationmanager.connectionstrings[“airmazin”].connectionstring; 我已经将数据插入到数据库中,以及如何将其存储到会话中,并在我的个人资料页面上显示当前用户信息(例如:用户名、电子邮件、性别等)。

  • 问题内容: 以下是允许用户将数据存储到Firestore中的代码。问题是,登录到该应用程序的所有用户都可以查看上传的数据。我如何才能仅允许当前登录的用户仅存储其帐户的数据? 对于Firebase数据库,我使用以下代码(有效,但不适用于Firestore) FirebaseUser用户= FirebaseAuth.getInstance()。getCurrentUser(); 字符串userId =

  • java ee应用程序(部署到wildfly中)在数据库中存储不同用户的敏感数据,如访问密钥等。为了解密这些数据--它需要一个与当前用户关联的主密码。用户登录到应用程序时输入的密码用于此操作。 现在我正在考虑使用keycloak来保护这个应用程序的可能性。但是看起来没有办法用keycloak为当前登录的用户获得密码(因为它是用令牌操作的)?要求用户在应用程序中再次输入密码不是一个选项。

  • 您好,我正在使用visual studio Professional2015,我创建了一个MVC5项目,但我有3个错误: 名称“viewbag”在当前上下文中不存在 名称“RenderBody”在当前上下文中不存在 名称“RenderSection”在当前上下文中不存在 我正在使用MVC5,我在网上搜索,找到了很多解决方案,但他们不适合我的情况。 这是\views\web.config 这是\we