【问题标题】:MVC3 - Authentication for UserIdMVC3 - UserId 的身份验证
【发布时间】:2012-06-28 09:28:39
【问题描述】:

明确: 我有两组用户 - 组 A - 用户 1、用户 2 GroupB - 用户 3、用户 4 A组做TaskA并创建TaskA对象 B组做TaskB并创建TaskB对象 基于角色可防止 GroupA 编辑 TaskB 对象,反之亦然

ISSUE - User1 仍然可以编辑 User2 的 TaskA 对象

我已将 SqlMembership 集成到我的自定义数据库中,并且在我的自定义表中,我有一个 UserId 字段,该字段映射到 AspNet_User 表中的 GUID AspNet_UserId 列。用户可以创建作业,它与用户的 AspNet_UserId 相关联。

我的问题是我具有基于角色的安全性,但我还必须设置安全性,因此只有具有 UserId 的用户才能访问具有包含其 UserId 的模型数据的编辑视图。

我看过这篇文章 - ASP.NET MVC 3 using Authentication

(但答案的第一部分有 29 个赞成票似乎不完整)

【问题讨论】:

    标签: c# sql asp.net-mvc-3 membership


    【解决方案1】:

    解决方案 -

    我还没有实现这个,但据我所知,这就是我正在寻找的。我在这里找到了它:http://forums.asp.net/t/1771733.aspx/1?Display+a+specific+data+for+User

    这有望使我不必查看 WIF...

    (保持我的手指交叉)

    员工控制器:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web.Mvc;
    using System.Web.Security;
    
    namespace UserDetails.Controllers
    {
    public class HomeController : Controller
    {
        private readonly List<Employee> m_employees;
    
        public HomeController()
        {
            m_employees = new List<Employee>
                              {
                                  new Employee
                                      {
                                          Id =  Guid.Parse("3aebbf53-3581-4822-bef4-c9701d927b93"),
                                          JobTitle = "Senior Developer",
                                          Manager = "Mr. Smith",
                                          Salary = 1500
                                      },
                                      
                                    new Employee
                                        {
                                            Id= Guid.Parse("{3924afa7-d31b-4d30-b368-f825d4028779}"),
                                            JobTitle = "Lead Developer",
                                            Manager= "Mr. Doe",
                                            Salary = 2500
                                        }
                              };
        }
    
        public ActionResult Index()
        {
            if (User.Identity.IsAuthenticated)
            {
                MembershipUser currentUser = Membership.GetUser(User.Identity.Name, true /* userIsOnline */);
                
                if (currentUser != null && currentUser.ProviderUserKey != null && currentUser.IsApproved)
                {
                    var currentUserId = (Guid)currentUser.ProviderUserKey;
    
                    Employee result = (from employee in m_employees
                                       where employee.Id == currentUserId
                                       select employee).FirstOrDefault();
    
                    return View(result);
                }
            }
    
            return View();
        }
    
        public ActionResult About()
        {
            return View();
        }
    }
    
    public class Employee
    {
        public Guid Id { get; set; }
        public string JobTitle { get; set; }
        public string Manager { get; set; }
        public int Salary { get; set; }
    }
    }
    

    索引视图

    @{
        ViewBag.Title = "Home Page";
    }
    
    @model UserDetails.Controllers.Employee
           
    <p>
    
    @if (Model != null && User.Identity.IsAuthenticated)
    {
        <label>Your name is: </label>@User.Identity.Name <br/>
        <label>Your Job Title is: </label>@Model.JobTitle<br/>
        <label>Your Manager is: </label>@Model.Manager<br/>
        <label>And you earn way too less money: &euro;</label> @Model.Salary
    }
    

    【讨论】:

      猜你喜欢
      • 2012-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-17
      • 1970-01-01
      • 2012-09-16
      相关资源
      最近更新 更多