加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 从web.Config授权Controller级别的用户

发布时间:2020-12-16 06:32:49 所属栏目:asp.Net 来源:网络整理
导读:在我的控制器中[授权]注释. 我想获取在web.config文件中设置的授权用户列表. add key="authorizedUsers" value="jeff,dan,mindy,claudia"/ 我知道在控制器中你可以做类似的事情: [Authorize Users="jeff,claudia"] 但我宁愿只更新web.config文件而不必重新
在我的控制器中[授权]注释.

我想获取在web.config文件中设置的授权用户列表.

<add key="authorizedUsers" value="jeff,dan,mindy,claudia"/>

我知道在控制器中你可以做类似的事情:

[Authorize Users="jeff,claudia"]

但我宁愿只更新web.config文件而不必重新编译.无论如何要读取我的列表的web.config文件,然后将其添加到[Authorize]属性?我也使用Windows身份验证而不是表单身份验证.

解决方法

您可以实现从AuthorizeAttribute继承的自定义AuthorizeAttribute.

我假设您正在使用FormAuthentication.否则,它将无法正常工作.

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method,AllowMultiple = true,Inherited = true)]
public class CustomUserAuthorizeAttribute : AuthorizeAttribute
{
    private string[] _usersSplit
    {
        get
        {
            var authorizedUsers = ConfigurationManager.AppSettings["authorizedUsers"];

            return authorizedUsers.Split(new[] {","},StringSplitOptions.RemoveEmptyEntries);
        }
    }

    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        if (httpContext == null)
            throw new ArgumentNullException("httpContext");
        IPrincipal user = httpContext.User;
        return user.Identity.IsAuthenticated && (_usersSplit.Length <= 0 || Enumerable.Contains(_usersSplit,user.Identity.Name,StringComparer.OrdinalIgnoreCase));
    }
}

用法

[CustomUserAuthorize]
public ActionResult Test()
{
    ViewBag.Message = "Your page.";

    return View();
}

仅供参考:理想情况下,您希望使用基于角色的身份验证,并将其存储在数据库中.它有点容易维护.但是,这取决于您的需要.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读