检查用户是否在asp.net mvc / angularjs中请求他自己的页面

时间:2014-10-13 08:13:08

标签: asp.net-mvc angularjs owin-security

我正在为我的项目使用带有angularjs的asp.net mvc。如何返回一些额外的数据(像isOwner变量一样)和user对象一起?

var isOwner = false;
if(user.Alias == User.Identity.Name)
isOwner = true;) 

在视图上,我只想在用户请求他自己的页面时显示编辑按钮

这是api控制器:

public User GetUser(String id)
{
    xRM.DAO.Model.User user = null;
    using (var db = new xRMContext())
    {
        user = db.Users
            .Include("Team").Include("Unit").Include("Location")
            .FirstOrDefault(u => u.Alias.ToLower() == id.ToLower());
    }

    if (user == null)
    {
        throw new HttpResponseException(HttpStatusCode.NotFound);
    }

    return user;
}

和angularjs控制器:

.controller('UserCtrl', ['$scope', '$location', '$routeParams', 'User', function ($scope, $location, $routeParams, User) {
    $scope.user = User.get({ id: $routeParams.id })
}])

1 个答案:

答案 0 :(得分:1)

您只需要返回一个viewmodel而不是User模型。 viewmodel应该包含视图所需的任何属性,而不仅仅是公开User对象的所有属性。例如:

public class UserViewModel
{
    public string UserName {get; set;}
    public string Email {get; set;}
    // more properties from User
    public bool IsOwner {get; set;}
}

您显然需要更改GetUser操作方法,使其返回UserViewModel,添加逻辑,确定用户是否为所有者,并将属性从User对象映射到视图模型。如果您发现自己经常映射属性,这可能会变得单调乏味,我强烈建议您使用Automapper