【问题标题】:How create my Custom Authorize Attribute for my MVC 4 application?如何为我的 MVC 4 应用程序创建自定义授权属性?
【发布时间】:2013-01-29 07:11:07
【问题描述】:

这个问题可能有很多重复项。但我忽略了 MVC 的默认成员身份,并使用我的自定义登录和 cookie。这就是为什么不能像示例中那样创建自定义授权属性。 我有这样的用户模型:

public class MyUserModel
{
 public string Id{ get; set; }
 public string UserName { get; set; }
 public string Password { get; set; }
 public bool RememberMe { get; set; }
 public bool RoleId { get; set; }
}

这是我的登录操作:

[HttpPost]
public ActionResult LogIn(MyUserModel model)
{
    if ((Request.Browser.Cookies))
       {
        if ((Request.Cookies["UserInfo"] == null))
         {
          if (model.RememberMe)
           {                           
            Response.Cookies["UserInfo"].Expires = DateTime.Now.AddDays(30);
           }
           else
           {
            Response.Cookies["UserInfo"].Expires = DateTime.Now.AddMinutes(Session.Timeout);
            }
              Response.Cookies["UserInfo"]["UserName"] = model.UserName;
              Response.Cookies["UserInfo"]["Password"] = model.Password;
              Response.Cookies["UserInfo"]["Id"] = model.Id.ToString();
            }                    
            else
            {
              Response.Cookies["UserInfo"]["UserName"] = model.UserName;
              Response.Cookies["UserInfo"]["Password"] = model.Password;
              Response.Cookies["UserInfo"]["Id"] = model.Id.ToString();
            }
         }
 return RedirectToAction("Index", "Home");
}

我需要通过 RoleId 创建自定义授权属性。顺便说一句,我有方法 bool UserInRole(roleId), bool IsUserAuthenticated() 已准备就绪。

抱歉英语不好。

【问题讨论】:

  • 在 LogOn 模型中使用 RoleId 有什么意义?用户可以在发布表单时在此字段中输入任何他想要的内容。您将用户配置文件信息保存在哪里?您是否在服务器上使用了一些存储空间?
  • 用户注册或登录时,RoleId是隐藏的。当用户在 MyService.SaveUser(MyUserModelEntity) 方法中注册时,我将值设置为 1 或 100(用户或管理员)
  • 隐藏是什么意思?你在哪里设置它的值?隐藏我希望你不是指隐藏字段。
  • 在视图中:@Html.Hidden("RoleId")。我在保存用户数据时设置它的值。
  • 什么会阻止用户修改这个隐藏字段中的值并提交他想要的任何值?使用 FireBug,这绝对是一项微不足道的任务。

标签: asp.net-mvc authentication custom-attributes asp.net-roles custom-authentication


【解决方案1】:

本教程很棒。您可以在此视频中清楚地了解自定义授权。 http://www.youtube.com/watch?feature=player_embedded&v=BsxUsyMSGeA

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-31
    • 1970-01-01
    • 2015-03-03
    • 1970-01-01
    • 2014-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多