在ASP.NET的FormAuthentication登录页面的每次登录时为用户分配角色?

时间:2013-12-21 12:17:16

标签: c# asp.net forms-authentication roles

我无法理解角色机制如何与ASP.NET协同工作。

我有一个Microsoft SQL Server数据库,其中已经设置了所有内容,我不想添加/删除/修改表。 “用户”表中有一个字段,用于通过引用“类型”表中的条目的ID指定用户的“角色”。我想使用此字段来区分用户的类型(例如,可以是管理员,高级版或标准版)。

每次连接时都不可能为用户分配角色吗?

我的意思是在Login.aspx.cs中这样的东西:

protected void btn_login_Click(object sender, EventArgs e)
{
    // On authentifie l'utilisateur via la BLL
    BusinessLogicLayer bll = new BusinessLogicLayer();

    Utilisateur user = bll.authenticate(txt_login.Text, txt_password.Text);

    // SUCCEEDED AUTH
    if (user != null)
    {
        // Ajout de l'utilisateur à son role correspondant
        if (user.Type1.nom == "lecteur")
            Roles.AddUserToRole(user.login, "lecteur");

        else if (user.Type1.nom == "journaliste")
            Roles.AddUserToRole(user.login, "journaliste");

        else if (user.Type1.nom == "administrateur")
            Roles.AddUserToRole(user.login, "administrateur");

        FormsAuthentication.RedirectFromLoginPage(user.login, cb_remember.Checked);
    }

    // FAILED AUTH (si on arrive jusqu'ici vu qu'on a pas été redirigé)
    else
        lbl_invalidCredentials.Visible = true;
}

我已经阅读了ASP.NET网站上的教程,但它使用了我无法实现的特定数据库配置。

1 个答案:

答案 0 :(得分:0)

默认情况下,

角色管理器使用ASPDBNET.mdf(成员资格)。

如果您想创建自定义角色提供程序,请尝试以下操作:

How to: Sample Role-Provider Implementation

<强> 更新
您可以使用Session而不是角色管理器:

登录页面中的

Session["role"] = "lecteur" ;

在管理页面中:

if(Session["role"]!=null)
{
    if(Session["role"]=="lecteur")
    { 
        //welcome admin
    }
    else
    {
        //access denied
    }
}
else
{
    //access denied
}  

更新

或者您可以使用role provider into linq