gpt4 book ai didi

c# - ASP.NET 身份动态角色授权

转载 作者:太空宇宙 更新时间:2023-11-03 15:28:24 25 4
gpt4 key购买 nike

由于我是 ASP.NET Identity 的新手,我正在观看有关 MVA 的视频,这时 Jeremy Foster 在演示时问了一个问题,即如何使以下内容动态化:

[Authorize("Administrators, Users")]
public ActionResult SomeAction()
{
//Access to only admins and users
}

作为回答,Adam Tuliper 说可以使用 Claims 以某种方式完成,但我在 Internet 上找不到任何具体的内容,或者我可能不理解。但如果有人能告诉我如何做到这一点,我将不胜感激。

这很重要,因为稍后,我可能希望允许另一个 Role 访问 SomeAction,如果我每次都需要为此重新编译和部署我的应用程序,那就不好了。此外,我可能会将控制权授予用户以更改其他类型用户的访问权限。

在过去,我通过覆盖 Authorize 属性来完成此操作,我从 cookie 中提取用户的 RoleId,并从数据库中检查用户是否有权访问所请求的操作。但不确定如何使用声明来完成。

最佳答案

像这样的事情呢:您可以将它与数据库一起使用,或者只是在 web.config 中维护授权角色列表。

 [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class MyCustomAuthorizationAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
// Do some logic here to pull authorised roles from backing store (AppSettings, MSSQL, MySQL, MongoDB etc)
...
// Check that the user belongs to one or more of these roles
bool isUserAuthorized = ....;

if(isUserAuthorized)
return true;

return base.AuthorizeCore(httpContext);
}
}

关于c# - ASP.NET 身份动态角色授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34454703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com