当用户不是管理员时,不调用控制器功能

时间:2014-04-28 15:59:10

标签: c# javascript ajax asp.net-mvc

我有以下代码,但没有为没有“Admin”角色的用户调用我的控制器功能。谁能解释我哪里出错? 为了澄清,对于他们在角色“Admin”中的用户,它可以正常工作,对于所有其他用户,不会调用控制器功能。

查看:

function acceptTerms() {        
    var userName = '@Html.ValueFor(m => m.UserName)';

    $.ajax({
        type: "POST",
        url: '@Url.Action("UpdateUserConnects", "User")',
        data: JSON.stringify({ userName: userName }),            
        contentType: "application/json; charset=utf-8",
        success: function (data) {               
            if (data == "Failed") {
                alert("failed");
            }
            else {
                var wnd = $("#wndTerms").data("kendoWindow");
                wnd.close();
                $.ajax({
                    type: "POST",
                    url: '@Url.Action("AcceptTerms", "Account")',
                    contentType: "application/json; charset=utf-8",
                    success: function (data) {
                        window.location.href = data
                    }
               });
            }
        }
    });

}

CONTROLLER:

 [AcceptVerbs(HttpVerbs.Post)]
    public String UpdateUserConnects(string userName)
    {
        try
        {
            UsersService usersService = new UsersService();
            Users user = usersService.GetUserByUsername(userName);
            if (user != null) {
                user.previouslyConnected = true;
                usersService.UpdateUser(user);
            }               
        }
        catch (Exception e) {  
            return "Failed";
        }
        return "Success";
    }

1 个答案:

答案 0 :(得分:0)

对于后来发现这一点的人:

控制器:

[Authorize]
public class UserController : BaseController {

    [AcceptVerbs(HttpVerbs.Post)]
    [AllowAnonymous]
    public String UpdateUserConnects(string userName)
    {
       try
       {
           UsersService usersService = new UsersService();
           Users user = usersService.GetUserByUsername(userName);
           if (user != null) {
               user.previouslyConnected = true;
               usersService.UpdateUser(user);
           }               
       }
       catch (Exception e) {  
           return "Failed";
    }
    return "Success";
}

问题是页面顶部的[授权],它只允许具有“管理员”角色的人员访问控制器中的功能。

要允许特定功能的所有用户使用[AllowAnonymous]作为该功能的属性。

允许其他角色名称使用[Authorize(Roles =“OtherRole”)]