小编Bil*_*ill的帖子

_signInManager.GetExternalLoginInfoAsync() 总是返回 null 和打开 id 到 azure 广告

为什么 signinmanager getexternallogininfoasync 方法总是返回 null?

我将 VS2015 与默认的 asp.net 核心(不是框架)项目一起用于具有个人用户帐户的 MVC (这是一项要求)。使用第三方登录的目的是让用户自行注册。基于角色的授权将由 asp.net 标识使用通过 Azure AD 注册时提供的标识进行处理。

如果以下对登录经理的解释不正确,请纠正我。此方法应提供有关外部登录的详细信息,并返回一个 claimprincipal 对象,其中包含用户提供的身份提供者提供的声明。

我使用以下指南在我的 Startup.cs(下面的类部分)中设置 OpenIdConnectAuthentication

https://azure.microsoft.com/en-us/documentation/samples/active-directory-dotnet-webapp-openidconnect/

当我启动外部登录提供程序时,它会将我定向到组织登录页面并成功。

但是,应由 signinmanager 方法填充的变量信息为 null

如果我在回调类中放置一个断点,则会填充 User 并且 IsAuthenticated 变量为 true。

我可以驱动允许用户自己在应用程序中注册的功能,但是,这是我第一次尝试实现第三方登录,我想了解在这一点上我做错了什么。

启动文件

  public void ConfigureServices(IServiceCollection services)
    {
        // Add framework services.
        services.AddApplicationInsightsTelemetry(Configuration);

        services.AddDbContext<ApplicationDbContext>(options =>
            options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

        services.AddIdentity<ApplicationUser, IdentityRole>()
            .AddEntityFrameworkStores<ApplicationDbContext>()
            .AddDefaultTokenProviders();
        // Add Authentication services.
        services.AddAuthentication(sharedOptions => {
            sharedOptions.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;

        });
        //services.AddDistributedMemoryCache();
        //services.AddSession();
        services.AddMvc();

        // Add application services.
        services.AddTransient<IEmailSender, AuthMessageSender>();
        services.AddTransient<ISmsSender, AuthMessageSender>();
    }

    // This …
Run Code Online (Sandbox Code Playgroud)

asp.net-core-mvc asp.net-core

6
推荐指数
2
解决办法
5667
查看次数

Python Tkinter Frame - 使框架宽度跨越整个根窗口宽度

我正在使用 tkinter 学习 Python GUI 编程。我想使用网格几何管理器在根窗口中放置一个框架,指定高度,并将框架扩展到根窗口的整个宽度。我尝试使用粘性选项来执行此操作,但这不会产生所需的结果。如何在不手动指定宽度的情况下使框架扩展到窗口的整个宽度?

代码:

import tkinter
import tkinter.ttk

win = tkinter.Tk()
win.geometry('600x600')

frame = tkinter.Frame(win, height=300)
frame.configure(bg='red')
frame.grid(column=0, sticky=tkinter.E + tkinter.W)

win.mainloop()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

python tkinter python-3.x

2
推荐指数
1
解决办法
6505
查看次数