簡體   English   中英

檢查用戶是否在asp.net mvc / angularjs中請求自己的頁面

[英]check if user requests his own page in asp.net mvc/angularjs

我在我的項目中使用帶有angularjs的asp.net mvc。 如何與user對象一起返回一些額外的數據(類似於isOwner變量)?

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 })
}])

您只需要返回一個視圖模型而不是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對象映射到viewmodel。 如果您發現自己經常映射屬性(可能會變得乏味),則強烈建議使用Automapper

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM