ConfigController 下的方法作用特性起作用。
/// <summary>
/// 获取app配置信息
/// </summary>
/// <returns></returns>
[HttpPost]
[AllowAnonymous]
public ConfigViewModel GetAppConfig()
{
var result = _client.Get("api/AppInfo/GetByAppId");
return new ConfigViewModel() { Logo = result.Data.Logo, CompanyName = result.Data.AppName };
}
UserController 下的方法 这个特性不起作用。
/// <summary>
/// 登录
/// </summary>
/// <param name="viewModel">登录实体</param>
/// <returns></returns>
[HttpPost]
[AllowAnonymous]
public UserViewModel Login([FromBody]LoginViewModel viewModel)
{
var result = _client.Post(viewModel, "api/SysUser/Login");
}
两个控制器继承同一个控制器
你是怎么知道没起作用的?
首先感谢站长亲在回答我的问题,有点受宠若惊。我这块有个认证的功能,我统一在baseContracl上家的授权特性,在config控制器上加允许匿名访问,调试发现它没去走认证的代码里面,但是登陆那块一点,就跑到认证里面去了。
@江宁织造: 基类中是如何进行授权的?
@dudu: 代码在公司电脑上,我现在只能简述授权干的几个事。
1.基类首先添加授权的特性,授权这块是重写授权特性。
2.重写授权方法
@江宁织造: 问题很奇怪,建议仔细检查一下代码
@dudu: 问题解决了,问题果然出在授权那块去了,我忘了我是重写了授权方法,想当然的以为加了那个特性就能自动匿名访问了。没考虑重写授权方法后也要考虑控制器或者动作添加的匿名访问特性也要特殊处理。翻着asp.net mvc 的源码授权特性的时候才恍然大悟。