ASP.Net Web Api帮助页面基于授权

dev*_*ate 5 c# asp.net asp.net-web-api

我正在使用Windows身份验证背后的ASP.Net Web API并使用[Authorize]属性来指定用户可以访问的控制器和函数.这非常有效.问题是我希望帮助区域仅反映用户被授予访问权限的内容.好奇,如果有人以某种方式实现了这一点.这是在控制器,App Start还是帮助控制器的级别完成的.

提前致谢...

我的一个控制器的代码片段

[Authorize]
public class TaktTimeController : ApiController
{
    private BIDataContainer db = new BIDataContainer();

    // GET api/TaktTime
    [Authorize(Roles="Admins")]
    public IQueryable<TaktTime> GetTaktTimes()
    {
        return db.TaktTimes;
    }

    // GET api/TaktTime/5
    [ResponseType(typeof(TaktTime))]
    [Authorize(Roles = "Admins")]
    public IHttpActionResult GetTaktTime(string id)
    {
        TaktTime takttime = db.TaktTimes.Find(id);
        if (takttime == null)
        {
            return NotFound();
        }

        return Ok(takttime);
    }
Run Code Online (Sandbox Code Playgroud)

Raj*_*njh 1

这可以在剃刀视图中实现,如下所示就是您所需要的。

 @if (User.IsInRole("admin"))
 {
     <div>
         <!--Text for admin here-->
     </div>
 }
 @if (User.IsInRole("user"))
 {
     <div>
         <!--Text for user here-->
     </div>
 }
Run Code Online (Sandbox Code Playgroud)

相同的逻辑可以用在 WebApi 控制器中

public string Get()
{
    if(User.IsInRole("admin"))
    {
        return "Text for admin";
    }

    if(User.IsInRole("user"))
    {
        return "Text for user";
    }
}
Run Code Online (Sandbox Code Playgroud)