blazor如何检测授权/公证

时间:2019-08-21 22:33:13

标签: blazor

我正在制作自定义# test data df = pd.DataFrame( [(1, 'Josh', 10000), (2, 'Michael', 5000), (3, 'Sara', 8000)], columns=['id', 'name', 'salary']) # crsr = cnxn.cursor() crsr.fast_executemany = True sql = "INSERT INTO Table_1 (id) VALUES (?)" # extract column and convert to list of single-value tuples data = [(x,) for x in df['id']] crsr.executemany(sql, data) cnxn.commit() 以在Blazor应用程序中进行测试。我担心新类不会具有与AuthenticationStateProvider类相同的功能,因为我不确定AuthenticationStateProvider的工作方式。在下面,我发布了自定义类。您能告诉我这是否是覆盖此类的可接受方法吗?

AuthenticationStateProvider

1 个答案:

答案 0 :(得分:1)

问题:

  

blazor如何检测授权/未授权

答案:

这是constructors for ClaimsIdentity之一:

public ClaimsIdentity (
 System.Collections.Generic.IEnumerable<System.Security.Claims.Claim> claims, 
 string authenticationType);

对于set as authenticated,只需将值发送到authenticationType,并引用文档:

  

IsAuthenticated 注意:访问时,将基于AuthenticationType属性的值返回IsAuthenticated属性的值。

AuthorizeView component要求IsAuthenticated

CustomAuthStateProvider sample看以下代码:

    var identity = new ClaimsIdentity(new[]
    {
        new Claim(ClaimTypes.Name, "mrfibuli"),
    }, "Fake authentication type");

对于先前的示例, IsAuthenticated将为真,因为ClaimsIdentity构造函数的"Fake authentication type"参数具有authenticationType

总结

如果您创建的身份包括 authenticationType参数,则表明用户已通过身份验证。如果您创建身份而没有 authenticationType参数,则不会对用户进行身份验证。

    var userService = RequestMyUserService(user, password);

    var identity = userService.IsValidUser
        ? new ClaimsIdentity(
            new[] {new Claim(ClaimTypes.Name, "mrfibuli"),}, 
            "My Custom User Service")  // authenticated
        : new ClaimsIdentity();        // not authenticated

    ...

有关{.3的ASP.NET Core身份验证简介,请参见Claims-based authentication