首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET样板-授权无效

问ASP.NET样板-授权无效
EN

Stack Overflow用户
提问于 2015-08-09 07:35:30
回答 1查看 3K关注 0票数 1

我正在使用ASP.NET样板框架来创建一个具有授权的应用程序,但是很难让它正常工作。

ajax方法调用Login方法并检索正确的数据,执行成功函数并确认:“登录!”(只有当登录信息正确时,才会出现错误)。

我预计“AuthenticationManager.SignIn”会处理所有登录功能(在模块-0中似乎就是这样)。但是,在登录并使用AbpMvcAuthorize应用到控制器后,我最终会在一个页面上告诉我,我没有打开页面的权限。

Javascript:

代码语言:javascript
复制
(function () {
    $('#LoginButton').click(function (e) {
        e.preventDefault();
        abp.ui.setBusy(
            $('#LoginArea'),
            abp.ajax({
                url: abp.appPath + 'Account/Login',
                type: 'POST',
                    data: JSON.stringify({
                    usernameOrEmailAddress: $('#EmailAddressInput').val(),
                    password: $('#PasswordInput').val(),
                    rememberMe: $('#RememberMeInput').is(':checked')
                }),
                success: function (data) {
                    if (data != null) {
                        confirm(data);
                   }
                },
                error: function () {
                    confirm("Something went wrong. Try again later!");
                }
            })
        );
    });
})();

AccountController:

代码语言:javascript
复制
[HttpPost]
public async Task<JsonResult> Login(LoginViewModel loginModel, string returnUrl = "")
{
    try
    {
        if (!ModelState.IsValid)
        {
            throw new UserFriendlyException("Your form is invalid!");
        }

        var loginResult = await _userManager.LoginAsync(
            loginModel.UsernameOrEmailAddress,
            loginModel.Password,
            loginModel.TenancyName
        );

        switch (loginResult.Result)
        {
            case AbpLoginResultType.Success:
                break;
            case AbpLoginResultType.InvalidUserNameOrEmailAddress:
                ...
        }

        AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
        AuthenticationManager.SignIn(new AuthenticationProperties { 
            IsPersistent = loginModel.RememberMe }, loginResult.Identity);

        if (string.IsNullOrWhiteSpace(returnUrl))
        {
            returnUrl = Request.ApplicationPath;
        }
    }
    catch (UserFriendlyException ex)
    {
        return Json(ex.Message);
    }
    return Json("Logged in!");
}

编辑:在AuthenticationManager.Sign(..)之后,我可以看到loginResult.User登录的用户信息。所以我想登录是可行的,但是AbpMvcAuthorize有问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-12 14:39:07

很奇怪。你是怎么创造出解决方案的?从模板(http://www.aspnetboilerplate.com/Templates)?因为,它在模板中正常工作(请参阅模板的HomeController:https://github.com/aspnetboilerplate/module-zero-template/blob/master/src/AbpCompanyName.AbpProjectName.WebSpaAngular/Controllers/HomeController.cs),所以您能与它进行比较吗?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31901970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档