小编Irs*_*shu的帖子

如何更新ASP.NET标识中的声明?

我正在为我的MVC5项目使用OWIN身份验证.这是我的SignInAsync

 private async Task SignInAsync(ApplicationUser user, bool isPersistent)
        {
            var AccountNo = "101";
            AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
            var identity = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);
            identity.AddClaim(new Claim(ClaimTypes.UserData, AccountNo));
            AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent, RedirectUri="Account/Index"}, identity);
        }
Run Code Online (Sandbox Code Playgroud)

如您所见,我添加AccountNo到声明列表中.

现在,如何在我的应用程序中的某个时刻更新此声明?到目前为止,我有这个:

 public string AccountNo
        {

            get
            {
                var CP = ClaimsPrincipal.Current.Identities.First();
                var Account= CP.Claims.FirstOrDefault(p => p.Type == ClaimTypes.UserData);
                return Account.Value;
            }
            set
            {
                var CP = ClaimsPrincipal.Current.Identities.First();
                var AccountNo= CP.Claims.FirstOrDefault(p => p.Type == ClaimTypes.UserData).Value;
                CP.RemoveClaim(new Claim(ClaimTypes.UserData,AccountNo));
                CP.AddClaim(new Claim(ClaimTypes.UserData, value));
            }

        }
Run Code Online (Sandbox Code Playgroud)

当我尝试删除声明时,我得到以下异常:

声明' http://schemas.microsoft.com/ws/2008/06/identity/claims/userdata:101 …

c# asp.net asp.net-mvc asp.net-mvc-4 asp.net-web-api

79
推荐指数
6
解决办法
8万
查看次数

如何在引导程序中的容器内创建100%屏幕宽度div?

假设我有以下标记:

<div class="container">
    <div class="row">
        <div class="col-md-12">
            ...
            <div class="full-width-div">
            </div>
        </div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

现在如何使.full-width-div拉伸到屏幕的整个宽度?因为目前它在容器内是有限的.

html css css3 twitter-bootstrap twitter-bootstrap-3

48
推荐指数
2
解决办法
17万
查看次数

使用把手渲染字符串数组

可以说我在ember控制器中有这样的数组,

selectedUsers: ["Popeye", "Sulley", "Gru"];
Run Code Online (Sandbox Code Playgroud)

现在,我如何使用把手将每个用户呈现在无序列表中?我可以使用{{#Each}}帮手吗?

handlebars.js

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

Android Facebook SDK:生成发布密钥哈希

我正在构建一个用户可以使用Facebook登录的应用程序.

我已经创建了如下的哈希键:

try {
         PackageInfo info = getPackageManager().getPackageInfo(
         "com.app.package",
         PackageManager.GET_SIGNATURES);
         for (Signature signature : info.signatures) {
         MessageDigest md = MessageDigest.getInstance("SHA");
         md.update(signature.toByteArray());
         Log.d("KeyHash", "KeyHash:"+ Base64.encodeToString(md.digest(),
         Base64.DEFAULT));
         Toast.makeText(getApplicationContext(), Base64.encodeToString(md.digest(),
                 Base64.DEFAULT), Toast.LENGTH_LONG).show();
         }
         } catch (NameNotFoundException e) {

         } catch (NoSuchAlgorithmException e) {

         }
Run Code Online (Sandbox Code Playgroud)

在调试模式下,一切运行良好.

当我导出项目以供发布时,它会出现以下错误:

"Invalid key hash. The key hash ****************** does not match any stored key hashes"
Run Code Online (Sandbox Code Playgroud)

我粘贴了Facebook Developer仪表板中打印的密钥,但应用程序仍然给我错误.

我的行为的完整包是" com.app.package.views",我试图在仪表板中使用此包(作为Google Play包名称),但没有任何改变.

我该如何解决?如何生成正确的发布密钥哈希?

android facebook facebook-javascript-sdk

33
推荐指数
8
解决办法
6万
查看次数

如何告诉JSON.NET StringEnumConverter采用DisplayName?

我有以下型号:

public enum Status
{
    [Display(Name = "Awaiting Approval")]
    AwaitingApproval,
    Rejected,
    Accepted,
}
Run Code Online (Sandbox Code Playgroud)

我在这样的模型中使用这个枚举:

public class Docs
    {
        [Key]
        public int Id { get; set; }
        [JsonConverter(typeof(StringEnumConverter))]
        public Status Status { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

现在这很好用; 序列化程序返回枚举的等效字符串.我的问题是如何告诉JSON.NET采用Display属性而不是string

c# asp.net json.net asp.net-web-api

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

RecyclerView在Android中只显示一行

我想使用RecyclerView显示记录列表.

但是当我运行应用程序时,它只显示一条记录.

我验证了我的代码,一切似乎都很好.

适配器代码:

    public class AdapterData extends RecyclerView.Adapter<AdapterData.DummyHolder> {

    private LayoutInflater layoutInflater;
    private ArrayList<String> mItems = new ArrayList<>();
    public Context ThisContext;

    public AdapterData(Context context)
    {
        layoutInflater = LayoutInflater.from(context);
        mItems = generateValues();
        ThisContext = context;
    }

    public static ArrayList<String> generateValues(){
        ArrayList<String> Dummy = new ArrayList<>();
        for(int i=1; i<100; i++)
        {
            Dummy.add("Item"+i);
            Log.d("MTS", String.valueOf(i));
        }
        return Dummy;
    }

    @Override
    public DummyHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view= layoutInflater.inflate(R.layout.row_layout,parent,false);
        DummyHolder holder=new DummyHolder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(DummyHolder holder, int …
Run Code Online (Sandbox Code Playgroud)

android android-recyclerview

9
推荐指数
1
解决办法
5370
查看次数

在scrollView里面的谷歌地图片段

所以我一直试图在fragment里面使用谷歌地图精简版scrollView,我无法显示地图.scrollView通过它自己移除并离开片段后,现在是时候可以看到地图了.我只是想了解为什么会这样,以及是否有可能让我的scrollView结束时显示这个片段.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:map="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.joe.goout.EventDetails">

<ImageView
    android:src="@mipmap/park1"
    android:layout_width="fill_parent"
    android:layout_height="150dp"
    android:scaleType="centerCrop"
    android:adjustViewBounds="true"
    android:id="@+id/imageView"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true" />

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@+id/imageView"
    android:id="@+id/scrollView"
    android:fillViewport="false">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Medium Text"
        android:id="@+id/textView"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

  </ScrollView>
</RelativeLayout> 
Run Code Online (Sandbox Code Playgroud)

android

8
推荐指数
2
解决办法
1518
查看次数

如何强制移动浏览器为输入类型="文本"拉出数字键盘?

在我的angularjs应用程序中,我有两个输入字段type="text",请在此处查看plunkr.

问题是货币格式不可能input type="number".

因此,当焦点转移到移动设备时,可以为移动设备调出数字keyborad input type="text"吗?

请帮忙

html javascript jquery android angularjs

6
推荐指数
1
解决办法
5268
查看次数

Laravel使用查询构建器嵌套连接查询

这是一个搜索功能,可以返回每个成员注册的最近年份.

我让它使用DB :: raw()调用.但无法让它与查询构建器一起使用.

工作守则:

$query = DB::table('membership as m');
$query->join(
    DB::raw(
        '(SELECT my.*
        FROM membership_years my
        INNER JOIN (
            SELECT member_id,MAX(membership_year) AS max_my
            FROM membership_years
            GROUP BY member_id
        ) my2
        ON my.member_id = my2.member_id
        AND my.membership_year = my2.max_my
        ) my'
    )
,'m.id','=','my.member_id');
Run Code Online (Sandbox Code Playgroud)

我对查询构建器代码的尝试:

$query = DB::table('membership as m');
$query->join('membership_years as my',
  function($j1){
    $j1->join('membership_years as my2',
      function($j2){
        $j2->where('my.membership_year','=','MAX(my2.membership_year)')
        ->on('my.member_id','=','my2.member_id');
      }
    )->on('m.id','=','my.member_id');
  }
);
Run Code Online (Sandbox Code Playgroud)

产生的错误是:

调用未定义的方法Illuminate\Database\Query\JoinClause :: join()

我不确定这是否因为$j2无法再访问join方法了?

原始MySQL查询:

SELECT my.membership_year,m.*
FROM membership AS m 
INNER JOIN
    ( …
Run Code Online (Sandbox Code Playgroud)

php mysql join query-builder laravel

6
推荐指数
1
解决办法
4027
查看次数

使用 XML 进行改造 - 元素在类中没有匹配项

我正在使用SimpleXmlConverterFactoryRetrofit2。以下是我试图解析的示例响应:

<entries timestamp="1513178530.8394">
 <entry id="2" date="20170104">
   <fruits>
      <fruit type="apple" count="16"/>
      <fruit type="banana" count="12"/>
      <fruit type="cerry" count="5"/>
      <fruit type="lemon" count="2"/>
      <fruit type="orange" count="2"/>
      <fruit type="pear" count="0"/>
      <fruit type="pineapple" count="2"/>
   </fruits>
 </entry>
<entry id="21" date="20170306">
   <fruits>
      <fruit type="pear" count="1"/>
      <fruit type="orange" count="3"/>
      <fruit type="banana" count="1"/>
      <fruit type="cerry" count="1"/>
      <fruit type="apple" count="2"/>
   </fruits>
 </entry>
</entries>
Run Code Online (Sandbox Code Playgroud)

现在我使用以下类来解析:

@Root(name = "entries")
public class Entries {
    @Attribute(name = "timestamp")
    private String timestamp;
    @ElementList(name = "entry")
    private List<EntryLog> entry;
}

@Root(name = "entry")
class Entry …
Run Code Online (Sandbox Code Playgroud)

java xml android retrofit2

6
推荐指数
1
解决办法
3208
查看次数