代码之家  ›  专栏  ›  技术社区  ›  Colin Brock

C#MVC NerdDinner授权助手方法问题

  •  0
  • Colin Brock  · 技术社区  · 15 年前

    NerdDinner 教程,我对与用户授权相关的特定帮助器方法有问题。其思想是,只有“拥有”特定晚餐的用户才能编辑或删除它(基于晚餐对象的HostedBy属性)。

    我的晚餐对象中有以下方法:

    public partial class Dinner {
    
        public bool IsHostedBy(string userName) {
            return HostedBy.Equals(userName, StringComparison.InvariantCultureIgnoreCase);
        }
    
        // other stuff removed for brevity
    
    }
    

    在我看来,我试图根据登录用户是否是晚餐的主人来显示/隐藏链接:

    <% if (Model.IsHostedBy(Context.User.Identity.Name)) { %>
    
        <%= Html.ActionLink("Edit Dinner", "Edit", new { id = Model.DinnerID })%>
        |
        <%= Html.ActionLink("Delete Dinner", "Delete", new { id = Model.DinnerID })%>    
    
    <% } %>
    

    我对C#和ASP.NET MVC都是新手,所以我很可能错过了一些简单的东西。非常感谢您的帮助,如果需要,我很乐意发布更多信息。

    2 回复  |  直到 15 年前
        1
  •  2
  •   Mike Atlas    15 年前

    我猜HostedBy和userName实际上不是同一个字符串!

    一些调试想法:

    1)尝试强制它始终返回true:

    public bool IsHostedBy(string userName) {
        return true;
    }
    

    2)添加一个控制台,亲自查看两个字符串是否相等:

       public bool IsHostedBy(string userName) {
            Console.WriteLine("userName: {0} / HostedBy: {1}", userName, HostedBy);  
            return true;
        }
    

        2
  •  2
  •   griegs    15 年前

    当我在做的时候,我不妨写下答案。