VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 559|回复: 3

判断用户是否属于某个角色?

[复制链接]

4

主题

8

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
发表于 2020-1-22 15:40:01 | 显示全部楼层 |阅读模式
protected void Page_Load(object sender, EventArgs e)
    {
        RolePrincipal p = (RolePrincipal)User;
        string[] roles = p.GetRoles();
        foreach (string s in roles)
        {
            Response.Write(s + "<br>");
        }
        if (HttpContext.Current.User.IsInRole("PurchaseAdmin"))
        {
            string url;
            url = "~/Default1.aspx";
            Response.Redirect(this.ResolveUrl(url));
                   }
    }

运行时出以下错,以前我好像解决过,但重装操作系统后问题就解决不了.?????
错误如下:
无法将类型为“System.Security.Principal.WindowsPrincipal”的对象强制转换为类型“System.Web.Security.RolePrincipal”。
回复

使用道具 举报

0

主题

58

帖子

32.00

积分

新手上路

Rank: 1

积分
32.00
发表于 2020-2-1 20:09:01 | 显示全部楼层
((RolePrincipal)Page.User.Identity).IsInRole
回复

使用道具 举报

4

主题

8

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
 楼主| 发表于 2020-2-4 17:00:01 | 显示全部楼层
自已解决了,原来是我将WEB.CONFIG中的启用windows 验证与角色验证给去掉了,所以报错了.启用后正常.
回复

使用道具 举报

4

主题

8

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
 楼主| 发表于 2020-2-6 11:30:01 | 显示全部楼层
代码改进一下(目的:用户属才不同角色则转向不同的页面)。

protected void Page_Load(object sender, EventArgs e)
    {
        RolePrincipal p = (RolePrincipal)User;
        string[] roles = p.GetRoles();
        foreach (string s in roles)
        {
            Response.Write(s + "<br>");
            string str1 ="采购系统管理员组";
            string str2 = s;
            if (str2.IndexOf(str1) > -1)
            {
                //Response.Write("包含");
                string url;
                url = "~/Default1.aspx";
                Response.Redirect(this.ResolveUrl(url));
            }
         }
     }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表