我有一个Api控制器,它返回一个获取请求的图像。我想授权这个请求。所以我将Authorize属性添加到了操作中。我正在使用Asp.net Identity框架进行授权。当我运行我的应用程序时,我使用用户名/密码通过ajax发送到/ Token登录到应用程序。然后我得到access_token并存储它。问题是当我用src attrib引用一个Image标签时(src指向上面说的api控制器),我没办法用它发送访问令牌。我将如何实现这个?
public partial class Startup
{
static Startup()
{
PublicClientId = "self";
UserManagerFactory = () => new UserManager<User>(new UserStore<User>(new ImagePerfektDbContext()));
OAuthOptions = new OAuthAuthorizationServerOptions
{
TokenEndpointPath = new PathString("/Token"),
Provider = new ApplicationOAuthProvider(PublicClientId, UserManagerFactory),
AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
AllowInsecureHttp = true
};
}
public static OAuthAuthorizationServerOptions OAuthOptions { get; private set; }
public static Func<UserManager<User>> UserManagerFactory { get; set; }
public static string PublicClientId { get; private set; }
public void ConfigureAuth(IAppBuilder app)
{
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login")
});
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
app.UseOAuthBearerTokens(OAuthOptions);
答案 0 :(得分:1)
我明白你的意思了。将访问令牌作为路由参数附加到src属性URL中绝不是一个好主意。
我会做什么...假设您将访问令牌存储在身份验证票证中,我会使用“匿名”操作过滤器标记操作方法并删除“授权”操作过滤器。然后,在操作方法代码中,我将尝试从身份验证票证(或存储它的任何位置)检索访问令牌,验证它,最后根据验证的成功返回图像。
我希望它有意义
利奥