gpt4 book ai didi

javascript - 仅在 MEAN js 中对经过身份验证的用户授予页面查看权限

转载 作者:行者123 更新时间:2023-11-28 07:25:56 24 4
gpt4 key购买 nike

我正在查看 MEAN js,我刚刚开始他们的教程,其中包含用户和文章。

注册后我就可以正确创建文章了,很好。

如果我注销,回到/article 页面,如果我尝试创建一篇文章,它会将我正确重定向到登录页面,但是,如果用户未登录,如何防止该页面被查看?

代码中没有什么特别的,就是原来的MEAN应用程序:http://meanjs.org/

这是文章的路由:

'use strict';

// Setting up route
angular.module('articles').config(['$stateProvider',
function($stateProvider) {
// Articles state routing
$stateProvider.
state('app.listArticles', {
url: '/articles',
templateUrl: 'modules/articles/views/list-articles.client.view.html'
}).
state('app.createArticle', {
url: '/articles/create',
templateUrl: 'modules/articles/views/create-article.client.view.html'
}).
state('app.viewArticle', {
url: '/articles/:articleId',
templateUrl: 'modules/articles/views/view-article.client.view.html',
controller: 'ArticlesController'
}).
state('app.editArticle', {
url: '/articles/:articleId/edit',
templateUrl: 'modules/articles/views/edit-article.client.view.html'
});
}
]);

目前我自己找到的唯一解决方案是在文章 Controller 中添加以下代码:

if ($scope.authentication.user === "") {
$location.path('home/');
}

但我认为这不是最好的解决方案。

最佳答案

您可以在状态上使用解析方法,并在用户每次访问时检查他们是否经过身份验证。不确定 ui-router 是否包含解析。

例如

.state( "app.profile", { 
templateUrl: "/build/templates/profile.html",
controller: "ProfileCtrl",
resolve: requireUser } )


var requireUser = { User: [ "$location", "$rootScope", "$q", "API", "Session",
function ( $location, $rootScope, $q, API, Session )
{
var deferred = $q.defer();

if( Session.get.authToken() )
{
if( Session.get.user() )
{
deferred.resolve( $rootScope.user );
}
else
{
$location.path( "/login" );
}
}
else
{
deferred.reject( "No user token" );
$location.path( "/login" );
}

return deferred.promise;

} ] };

关于javascript - 仅在 MEAN js 中对经过身份验证的用户授予页面查看权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29653458/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com