MVC4认证&自定义数据库的授权

时间:2013-05-07 16:04:38

标签: asp.net-mvc asp.net-mvc-4 forms-authentication

首先,我想说我知道有很多这方面的主题,我也在网上搜索mvc处理安全性和保存用户信息等的整个概念,但我想得到一些建议当我正在读这篇文章时,专业人士的想法,所以我会解释我的情况,我很感谢帮助。

假设我有一个名为“Users”的自定义表

public class Users : KySerializableObject
{    
    [required]
    public virtual string Email { get; set; }

    [required]
    public virtual string userName {get; set; }

    public virtual UserType UserType { get; set; }
    [Required]
    [ForeignKey("UserType")]
    public virtual int UserTypeID { get; set; }
}

现在我所知道的是mvc提供了一个简单的会员,适用于简单的情况,但由于我有不同类型的用户和我的用户的附加信息,我想知道的是我怎么能使用[authorize]标签为我的用户使用不同的角色,我更喜欢使用我自己的角色表,还有我如何处理登录过程?我的意思是我应该使用FormsAuthentication的部分,或者我甚至不确定我是否应该使用它,我真的迷失了,我很想听到你们的一些建议。我不是要求代码或任何东西,任何能够解释我的情况的良好指导的链接都会很棒。

再次感谢

2 个答案:

答案 0 :(得分:0)

我有相同的情况,我正在遵循程序 身份验证FORMS身份验证 授权我将自己的包装类编写到RoleProvider。有了这个,你可以直接使用

[授权(规则=“管理员,用户”)]

如果您的问题是身份验证/授权,它将完美地帮助您。

答案 1 :(得分:0)

Please take a look at this forum discussion in the ASP.Net forum

如果你知道自己的身份验证方式,那么你应该在这里修改代码。但是,根据您的要求,请仔细查看这段代码

string[] roles = //you add your custom roles for the current user to this string list
GenericPrincipal userPrincipal = new GenericPrincipal(new GenericIdentity(authTicket.Name),

roles); //然后你创建一个通用原则

Context.User = userPrinciple;

请记住,如果您将此代码放在Global.asax文件之外,那么Context就是HttpContext.Current

现在您可以使用[Authorize(Roles = "yourRole1, yourRole2")]

希望有所帮助。